Кнопка отправки ASP.NET MVC2 имеет правильные значения, но не отправляет значения в действие - PullRequest
0 голосов
/ 07 января 2011

У меня есть кнопка, код которой генерируется следующим образом:

 <% RouteValueDictionary dictionary2 = new RouteValueDictionary(); %>
        <% dictionary2.Add("EventID",0); %>
        <% dictionary2.Add("CustomerID",Model.customer.CustomerID.ToString()); %>
        <% using (Html.BeginForm("EventEdit", "Customers", dictionary2,FormMethod.Get,null ))
                   { %>
        <button type="submit">
            new event</button>
        <%} %>

Фактический сгенерированный код:

<form action="/Customers/EventEdit?EventID=0&amp;CustomerID=1" method="get">

                <button type="submit">
                    new event</button>
                </form>

Но кнопки вызывают этот адрес:

http://localhost:20588/Customers/EventEdit

и я получаю:

Словарь параметров содержит пустую запись для параметра 'EventID' ненулевого типа 'System.Int32'для метода «System.Web.Mvc.ActionResult EventEdit (Int32, Int32)» в «TechRun.UI.Controllers.CustomersController».Необязательный параметр должен быть ссылочным типом, обнуляемым типом или быть объявлен как необязательный параметр.Имя параметра: параметры

Любая идея, что я делаю неправильно (в этой форме есть другие кнопки сообщений, но они работают нормально).Благодаря.

1 Ответ

1 голос
/ 07 января 2011

Попробуйте вот так :

<% using (Html.BeginForm(
    "EventEdit", 
    "Customers", 
    new { EventId = "0", CustomerID = Model.customer.CustomerID }, 
    FormMethod.Get))
{ %>
    <input type="submit" value="new event" />
<% } %>

Также убедитесь, что нет какого-либо javascript, который мог бы помешать отправке формы, отправив запрос AJAX и забыв включить значения. И, наконец, убедитесь, что Model.customer.CustomerID не пусто. Используйте FireBug, чтобы точно узнать, какой запрос отправляется на сервер.


UPDATE:

Согласно спецификации :

Если метод "получить" и действие это HTTP URI, пользовательский агент принимает значение действия, добавляет "?" в затем добавляет набор данных формы, кодируется с использованием "Применение / х-WWW-форм-urlencoded" тип контента.

Это означает, что вы не должны использовать параметр строки запроса в действии формы с методом GET. Вам нужно использовать скрытые поля внутри формы, чтобы передать эти значения на сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...