我定义了以下自定义路线:
routes.MapRoute(
"EditSearch",
"EditUser/Edit/{userId}",
new { controller = "EditUser", action = "Edit" }
);
当我手动输入URL时,路径完全正常。但是,当我的搜索页面的GET表单发布时,该网址会显示为../EditUser/Edit/?userId=aaa9999
。 GET表单在我的Search.cshtml文件中定义为@using (Html.BeginForm("Edit", "EditUser", FormMethod.Get ))
,并应将userId
参数发送到编辑操作。
我的Search.cshtml页面有一个Html.EditorFor(model => model.userId)
,其中包含我希望在我的URL地址中显示的userId参数。
我希望我的搜索页面指向"搜索"按下按钮:
../EditUser/Edit/aaa9999
P.S。我知道EditUser控制器名称和编辑操作名称是多余的,但我稍后会修复它。
答案 0 :(得分:1)
您可以将路线值传递给BeginForm
方法。
@using(Html.BeginForm("Edit", "EditUser", new { userId = Model.userId }, FormMethod.Get))
{
...
}
通常在编辑模型时,您的网址通常如下所示
http://mysite.com/users/edit/1
当您提交表格GET或POST(我建议使用POST)时,表格使用当前网址,在这种情况下您只需要使用,
@using(Html.BeginForm())
{
...
}
生成的表单看起来像
<form action="/" method="post">
...
</form>
答案 1 :(得分:0)
只需要添加userId参数,其余就可以了。它可以正常工作。
routes.MapRoute( "EditSearch", "EditUser/Edit/{userId}", new { controller = "EditUser", action = "Edit", userId="" } );