ASP.NET MVCプレビュー4-停止ます。RouteUrl()など。既存のパラメータ
-
09-06-2019 - |
質問
私はアクションのようになります:
public class News : System.Web.Mvc.Controller
{
public ActionResult Archive(int year)
{
/ *** /
}
}
るルートでのようになります:
routes.MapRoute(
"News-Archive",
"News.mvc/Archive/{year}",
new { controller = "News", action = "Archive" }
);
URLの私には:
News.mvc/Archive/2008
私はこのページのフォームのようになります:
<form>
<select name="year">
<option value="2007">2007</option>
</select>
</form>
届出書を提出るべきかもしれません。mvc/アーカイブ/2007の場合'2007"を選択します。
このフォームのaction属性には"ニュースmvc/アーカイブ".
ただし、宣言すればいい形のようになります:
<form method="get" action="<%=Url.RouteUrl("News-Archive")%>">
で描画して
<form method="get" action="/News.mvc/Archive/2008">
で誰か教えてくださいまた僕に足?
解決
ご夫婦問題になると思います。
第一に、ルートなデフォルト値は"年間"、そのURLに"/ニュースmvc/アーカイブ"を実際に有効でないためのルーティング。
第二には、期待形成の値を表示していルートパラメータを、実際にはそうではありませんどのようにHTMLです。ご利用の場合はプレーンフォルムを選択し、提出し、Urlを"?年=2007年"は終了します。これはいかに取得-方法で作動するよう設計されています。
でに行う必要があるという重要です。
- したい場合は、ユーザが選択可能になにかをドロップダウンと変化する投稿のURL、そしておいてJavascriptを使用そのために(傍受しの提出を策定し、正しいURL)
- んでも大丈夫/ニュースmvc/アーカイブ?年=として、2007年のサイトでは、できなくなることがあり{年}識別記号の経路を提案しています。また、"int year"パラメータを自動でフォーム値も読み込みアクションメソッドのパラメータ
他のヒント
とあると思った理由のルートを含{年}の発生経路のいつの時代もあります。
れば誰でも確認す。
液
ねこちらは、ソリューション(ブラッド-リーディンくにあります。
1)必要デフォルト値路線:
routes.MapRoute(
"News-Archive",
"News.mvc/Archive/{year}",
new { controller = "News", action = "Archive", year = 0 }
);
2)にリダイレクトを構文解析パラメータを取得します中にいるのと同じURLをセグメント
public ActionResult Archive(int year)
{
if (!String.IsNullOrEmpty(Request["year"]))
{
return RedirectToAction("Archive", new { year = Request["year"] });
}
}
3)してくださいごにリダイレクトコードのご請求params 前 任意のコードを替"デフォルトは"年間作品の応募がありました。すなわち
public ActionResult Archive(int year)
{
if (!String.IsNullOrEmpty(Request["year"]))
{
return RedirectToAction("Archive", new { year = Request["year"] });
}
if (year == 0)
{
/* ... */
}
/* ... */
}
3)明示的に指定のデフォルト値のUrl。RouteUrl()を呼び出:
Url.RouteUrl("News-Archive", new { year = 0 })
所属していません StackOverflow