0

我已经定义了以下自定义路线:

routes.MapRoute(
               "EditSearch",
               "EditUser/Edit/{userId}",
               new { controller = "EditUser", action = "Edit" }
           );

当我手动输入 URL 时,路由工作得很好。但是,当我的搜索页面的 GET 表单发布时,URL 显示为../EditUser/Edit/?userId=aaa9999. GET 表单在我的 Search.cshtml 文件中定义为@using (Html.BeginForm("Edit", "EditUser", FormMethod.Get )),并且应该将userId参数发送到 Edit 操作。

我的 Search.cshtml 页面有一个Html.EditorFor(model => model.userId)包含我希望在我的 URL 地址中显示的 userId 参数。

当按下“搜索”按钮时,我希望我的搜索页面指向下面的 URL:

../EditUser/Edit/aaa9999

PS 我知道 EditUser 控制器名称和 Edit 操作名称是多余的,但我稍后会修复它。

4

2 回答 2

1

您可以将路由值传递给BeginForm方法。

@using(Html.BeginForm("Edit", "EditUser", new { userId = Model.userId }, FormMethod.Get))
{
   ...
}

通常,当您编辑模型时,您的 url 通常看起来像这样,

http://mysite.com/users/edit/1

当您提交 GET 或 POST 表单(我建议使用 POST)时,表单使用当前 URL,在这种情况下,您必须使用所有表单,

@using(Html.BeginForm())
{
  ...
}

生成的表格看起来像

<form action="/" method="post">
   ...
</form>
于 2012-07-16T14:30:04.717 回答
0

只需要添加 userId 参数就可以了,它会起作用。

routes.MapRoute(
               "EditSearch",
               "EditUser/Edit/{userId}",
               new { controller = "EditUser", action = "Edit", userId="" }
           );
于 2012-07-16T14:17:36.883 回答