質問

こんにちは、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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top