Javascript из представления маршрутизации к неправильному действию в контроллере - PullRequest
0 голосов
/ 03 января 2019

Среда проекта: 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 для того же контроллера, и он отлично работает

Будем благодарны за любые предложения.

1 Ответ

0 голосов
/ 03 января 2019

вы можете использовать вызов AJAX, например:

function  OnNameEdit(val)
{
   $.ajax({
      url: 'OnNameEdit',
      data: { Value: val }
   }).done(function() {
      alert('OnNameEdit called'); 
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...