0

次のカスタム ルートを定義しました。

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

URL を手動で入力すると、ルートは完全に正常に機能します。ただし、検索ページの GET フォームを投稿すると、URL が のように表示され../EditUser/Edit/?userId=aaa9999ます。GET フォームは Search.cshtml ファイルで として定義されており、パラメーターを Edit アクションに@using (Html.BeginForm("Edit", "EditUser", FormMethod.Get ))送信する必要があります。userId

私の 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 に答える