Параметры 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" } } ))
Другие вопросы по тегам