Параметры URL не отображаются в ASP.MVC при использовании варианта Html.BeginForm
У меня есть представление, которое определяет форму как
<% using (Html.BeginForm( "Update", "CcisCase", FormMethod.Post, new { id = "ccisEditForm" } ))
с кнопкой отправки:
в RegisterRoutes
метод (в HttpApplication
класс в global.asax.cs
), У меня есть:
routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" );
routes.MapRoute(
"CcisCase",
"CcisCase/{action}/{cmDatabaseId}/{caseId}",
new { Controller = "CcisCase", Action = "CcisCaseEdit", caseId = "" } );
URL, сгенерированный MVC, оканчивается на "/Update", но параметров нет. Что я делаю неправильно?
Спасибо боб
3 ответа
Какие параметры вы ожидаете увидеть? Сообщение не добавляет параметры в строку запроса, как это делает FormMethod.Get. И эта перегрузка с идентификатором является набором HTML-атрибутов для отображения для тега (что, я полагаю, вы знали, но на всякий случай).
НТН.
Ваш маршрут содержит параметр {caseId}, но ваша BeginForm определяет только значение id.
new {id = "cssEditForm"}
Вам нужно что-то вроде этого, чтобы включить значение caseId
using (Html.BeginForm( "Update", "CcisCase", FormMethod.Post, new { caseId = 1, id = "ccisEditForm" }
Если в вашем действии не используется значение id="ccisEditForm", вы можете удалить его, чтобы уменьшить помехи в коде.
Я понял, в чем была моя проблема. Мне пришлось передать существующие данные маршрута следующим образом:
using (Html.BeginForm( "Update", "CcisCase", ViewContext.RouteData.Values, FormMethod.Post, new Dictionary<string, object> { { "id", "ccisEditForm" } } ))