ASP.NET MVC 3 Urlによる複数のパラメータ伝達方法

2366 ワード

MVC 3はURLを介して値を伝達するが、一般的に「クライアント(&)から潜在的に危険なRequest.Path値が検出される」という問題に遭遇する
この問題の解決方法は、私の他のブログで説明されています.ここでは接続を示します.【クライアント(&)から潜在的に危険なRequest.Path値が検出された】解決方法
方法1:
Url伝参はGetによって行われ,一般に我々は一定の規則的なUrlによって伝参する.例えば下記URLです.
http://localhost/contorller/action/?Params1=a&Params2=b
注意:URLの中の“?”は取り除くことができなくて、私はかつてURLのルートとurlのパラメータを混同して、上のURLの中で“?”がないので、2日の时間をしてやっと問題がどこにあるかを明らかにしました.皆さん、同じミスをしてはいけませんよ.
次のように、controllerでメソッドをバインドすることで取得できます.
public ActionResult Index(ExpModel model, string Params1 , string Params2)
{
            ViewBag.P1 = Params1 ;
            ViewBag.P2= Params2; 
            return View();
}

方法2:
MVC 3のルーティングルールの変更
Global.asax.csでルーティング規則を変更する
 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "Default", //     
                "{controller}/{action}/{id}", //       URL
                new { controller = "Home", action = "Index", id = UrlParameter.Optional} //      
            );

MapRouteメソッドはRouteCollectionExtensionsに6つのリロードバージョンがあります!ここでは、最もパラメータの多いリロードバージョンを選んで紹介します.
public static Route MapRoute( this RouteCollection routes, string name, string url, Object defaults, Object constraints, string[] namespaces )
name:ルーティングリストにある唯一の名前(MapRouteを2回も繰り返すことはできません)
url:ルーティング一致urlフォーマット
defaults:ルーティングurl{プレースホルダ}のデフォルト値
constraints:urlの{プレースホルダ}の制約
namespaces:これはルーティング検索を設定するためのコントローラネーミングスペースです!
たとえば、次のルールに変更できます.
 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "Default", //     
                "{controller}/{action}/{uid}_{token}_{others}.html", //       URL
                new { controller = "Home", action = "Index", uid = UrlParameter.Optional, token = UrlParameter.Optional,others = UrlParameter.Optional} //      
            );

アクセスしたURLアドレスは次のようになります.http://localhost/home/index/123_tokenvalue_othersvalue.htmlの場合
controller="Home", action="Index", uid=123, token=tokenvalue, others=othersvalue
取得は上記の方法と同じです.
Routeの詳しい使い方と説明について、MSDNの資料を見てみましょう.ここで接続します.
ASP.NET Routing:http://msdn.microsoft.com/en-us/library/cc668201.aspx?cs-save-lang=1&cs-lang=csharp