Ajax.BeginForm Ошибка в MVC2 ??Ajax для публикации на неправильный контроллер? - PullRequest
1 голос
/ 22 сентября 2010

Я использую форму ajax, пытаясь отправить обратно CustomerController с помощью метода Create.Вот код

<% using (Ajax.BeginForm("Create", "Customer", new AjaxOptions { LoadingElementId = "saving"}, new { @class = "block_content form" }))
        {%>...

Когда моя HTML-форма рендерит, форма выглядит следующим образом

<form onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, loadingElementId: 'saving', onComplete: Function.createDelegate(this, $j('#accoutcreate').dialog('close')) });" onclick="Sys.Mvc.AsyncForm.handleClick(this, new Sys.UI.DomEvent(event));" method="post" class="block_content form" action="/Job/Create?Length=3"> ...

Как вы можете видеть, форма фактически публикуется в / Job / Create вместо /Клиент / Создать

Я не уверен, почему это происходит.Есть идеи?

Ответы [ 2 ]

5 голосов
/ 10 января 2013

Полагаю, рамки взяли не соответствующий метод. Может быть, это:

public static MvcForm BeginForm(this AjaxHelper ajaxHelper,
string actionName, object routeValues, AjaxOptions ajaxOptions,
object htmlAttributes);

И вы предоставили:

"Create" - actionName,   "Customer" - routeValues,   new AjaxOptions(..) - ajaxOptions,   new { @class = "block_content form" }
- htmlAttributes.

Обратите внимание, что routeValues имеет тип объекта и строку "Customer", и все в порядке для компилятора C #, но не для вас.

Попробуйте написать:

(Ajax.BeginForm("Create", "Customer", null,
new AjaxOptions { LoadingElementId = "saving"}
new { @class = "block_content form" }))
0 голосов
/ 22 сентября 2010

Возможно ли, что у вас есть настройка маршрута в Global.asax, которая отображает запросы "\ Job" на "CustomerController"?Если это так, механизм маршрутизации в MVC будет возвращать «\ Job» в качестве URL-адреса для обеспечения согласованности URL-адресов.

Маршрут будет выглядеть примерно так:

        routes.MapRoute("Name", "Job/Create", new { controller = "Customer", action = "Create" });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...