хорошо, так что я новичок в MVC. То, что я делаю, - это создание пользовательской формы. UserViewModel имеет свойство кода отделения типа long
. Я хочу небольшой селектор веток, где вместо простого текстового поля для кода у меня есть текстовое поле и ссылка check name , при нажатии на которую будет возвращено имя ветви с некоторым ajax.
Итак, я сделал селектор веток и поместил его в Shared / EditorTemplates. Похоже на это
@model long
<div class="editor-label">
Branch ID: @Html.TextBoxFor(model => model)
@Ajax.ActionLink("Get Branch Name", MVC.Admin.Home.BranchDetail(Model),
new AjaxOptions { UpdateTargetId = "BranchName", LoadingElementId = "loading" })
<p id="loading" style="display: none">
Loading...
</p>
</div>
<div id="BranchName" class="editor-field">
</div>
У меня есть настройка UIHint в viewmodel, поэтому, когда я говорю EditFor (model.BranchName), он отображается совершенно так:
Мои проблемы:
1. Существует без ajax! Когда я щелкаю по нему, идет URL: http://localhost:1159/Admin/Home/BranchDetail?brcd=0 А затем URL выдает ошибку, потому что нигде нет BranchDetailsView .
Вот как выглядит контроллер:
public virtual ActionResult BranchDetail(long brcd)
{
if (Request.IsAjaxRequest())
{
//code to find branch
if (br == null)
{
return Content("No Branch Found");
}
else
{
return Content(br.BranchName + "Circle: " + br.Circle);
}
}
return View();//we should not be here.
}
2. Другая проблема заключается в том, как заставить AjaxLink возвращать код, который набран. Если вы заметили экран, ссылка на ссылку имеет brcd=0
. Я хочу отправить код филиала на контроллер! Я попытался BeginRouteForm
с кнопкой ввода внутри редактора, но что в итоге представляет форму «Создать страницу»? Это был бы правильный способ сделать это?
Примечание: я использую T4MVC, также, вначале я забыл, но на странице создания я упоминал microsoft.ajax.js
и microsoft.mvc.ajax.js
.
Обновление : мне удалось заставить это работать с JQuery, и это кажется довольно хорошим и простым. Тем не менее, мне бы очень хотелось узнать, как такого рода вещи обычно делаются с Ajax.BeginForm
, так как я изучаю MVC.