Среда проекта: C #, MVC 5.0
HTML-код от Edit.cshtml
:
@Html.EditorFor(model => model.ActiveClient.ClientName, new {
htmlAttributes = new { @onchange = "OnNameEdit(this.value)",
@class = "form-control" } })
jQuery / JavaScript из Edit.cshtml:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
}
<script>
function OnNameEdit(val) {
window.location.href = "OnNameEdit?Value=" + val;
};
</script>
Код для действия в контроллере:
[HttpGet]
public ActionResult OnNameEdit(String Value)
{
WFViewModel = (WorkflowVM)TempData["WFViewModel"];
if (Value != null)
{
WFViewModel.ActiveClient.ClientName = Value;
}
TempData["WFViewModel"] = WFViewModel;
return RedirectToAction("Edit", "Clients");
}
Действие, которое вместо этого выполняет управление в том же контроллере:
// GET: Clients/Edit/5
public ActionResult Edit(int? id)
{
WFViewModel = (WorkflowVM)TempData.Peek("WFViewModel");
// Remaining code removed for brevity
Вид загружается нормально. Каждый добирается до поля, чтобы изменить содержание ClientName и изменяет содержание.
Когда одна из вкладок выходит из элемента управления ClientName, элемент управления переходит к функции OnNameEdit () в части скриптов
файла Edit.cshtml
. Когда эта функция завершается, управление переходит к действию с именем Edit () вместо
Действие с именем OnNameEdit () в том же контроллере.
Этот код в основном идентичен коду для представления Create для того же контроллера, и он отлично работает
Будем благодарны за любые предложения.