使用Html.BeginForm变体时,ASP参数中没有出现URL参数

时间:2010-11-02 18:01:58

标签: asp.net-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 = "" } );

MVC生成的url以“/ Update”结尾,但没有参数。我做错了什么?

谢谢,  鲍勃

3 个答案:

答案 0 :(得分:2)

您期望看到哪些参数?一个帖子不会将参数附加到查询字符串,FormMethod.Get会。并且,id的重载是为标记呈现的HTML属性的集合(我假设你知道,但以防万一)。

HTH。

答案 1 :(得分:1)

您的路由包含参数{caseId},但您的BeginForm仅定义了一个id值。

new {id = "cssEditForm"}

你需要这样的东西来包含caseId值

using (Html.BeginForm( "Update", "CcisCase", FormMethod.Post, new { caseId = 1, id = "ccisEditForm" }

如果你的动作没有使用id =“ccisEditForm”值,那么你可以删除它,以减少代码混乱。

答案 2 :(得分:1)

我弄清楚我的问题是什么。我必须按如下方式传递现有的路线数据:

        using (Html.BeginForm( "Update", "CcisCase", ViewContext.RouteData.Values, FormMethod.Post, new Dictionary<string, object> { { "id", "ccisEditForm" } } ))