ルートにリダイレクトするASP.NET MVCフォーム
-
06-07-2019 - |
質問
こんにちは、Global.asaxで定義されたルートを使用してその値を(GET要求を介して)投稿するASP.NET MVCフォームを使用できますか?このように定義されたフォームがあります:
<% using (Html.BeginForm("CanviaOpcions","Sat",FormMethod.Get))
{ %>
<fieldset>
<legend>Opciones</legend>
<%= Html.DropDownList("nomSat")%>
<input type="submit" />
</fieldset>
<% } %>
global.asaxのおよび次のルート:
routes.MapRoute(
"Canvia Opcions",
"Sat/{nomSat}",
new { controller = "Sat", action = "CanviaOpcions" }
);
値がXXXのnomSatを使用してフォームを送信した後、ブラウザーで次のURLを使用する必要があります。 http: // machinename / sat / XXX
それは可能ですか?
解決
あなたがナビゲートするURLを本当に気にしますか、それともユーザーが次に見るURLだけを気にしますか?
ユーザーに表示されるURLだけに関心がある場合、試行しているメソッドを使用する必要はありません。
できることは、 "nomsat"を読み込むpostアクションを使用することです。パラメータを使用して、目的のURLを持つ別のアクションにリダイレクトします。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(string nomsat)
{
...
return RedirectToAction("Detail", new RouteValueDictionary {{"nomsat", nomsat}});
}
public ActionResult Detail(string nomsat)
{
...
return View();
}
他のヒント
いいえ、HTMLフォームを使用してルーティングパラメーターに追加することはできません。
ただし、Javascript関数を使用して動作をシミュレートできます。このように:
<fieldset>
<legend>Opciones</legend>
<%= Html.DropDownList("nomSat")%>
<input type="button"
onclick="window.location=('/<%=Url.Action("CanviaOpcions", "Sat") %>/' +
$('#nomSat').val())" />
</fieldset>
所属していません StackOverflow