2012-01-09 17 views
0

電子メールとGUIDを含むURLの処理を開始する必要があります。最初のparamは電子メールアドレスで、2番目のパラメータはGuidです。このためクエリ文字列パラメータのエラー

http://www.myWebSiteurladdress.com/Account/[email protected]?MyId=222DF915-264E-4034-BF26-22EB1165667C

私はその後、私は以下のように私のアクションメソッドを持っている

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "RouteABC", // Route name 
     "{controller}/{action}/{mail}/{id}", // URL with parameters 
     new { controller = "Account", action = "MyActionMethod", mail = string.Empty, id = Guid.Empty } // Parameter defaults 
    ); 

    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
    ); 
} 

以下のように私のルーティングを変更しました。私はエラーを次取得上記URL、http://www.myWebSiteurladdress.com/Account/[email protected]?MyId=222DF915-264E-4034-BF26-22EB1165667Cに行くとき

public class AccountController : Controller 
    { 
     public ActionResult MyActionMethod(string email, Guid id) 
     { 

      ............ 
     } 

問題があります。私がここで間違っているかもしれない何かアイデア?

パラメータ辞書方法 「System.Web.Mvc.ActionResult MyActionMethod(可能System.String、 可能System.Guidのパラメータ 'MYID' 非NULL可能タイプの '可能System.Guid' のヌルエントリを含みます) 'を' SmartChartsMVC.Controllers.AccountController 'に追加します。 optionalパラメータは、参照型、null可能型、または省略可能なパラメータとして である必要があります。パラメータ名:パラメータ

答えて

1

適切に書式設定されたURLに疑問符を1つ含めることができます。これは、パス部分とクエリ文字列を区切るものです。したがって、あなたがナビゲートしようとしているURLは無効です。

はるかに現実的なURLは、次のことができます:

http://www.myWebSiteurladdress.com/Account/MyActionMethod/[email protected]/222DF915-264E-4034-BF26-22EB1165667C 

また、あなたのルート名トークンがあなたのアクションパラメータと一致することを確認してください。 Global.asaxのルート定義では{mail}を使用しましたが、アクション引数ではパラメータの名前としてemailを使用しました。命名規則に一貫性があることを確認してください。

そして、あなたは、単にこのようなURLを持っているしたい場合:

その後、
http://www.myWebSiteurladdress.com/Account/[email protected]&MyId=222DF915-264E-4034-BF26-22EB1165667C 

デフォルトルートは、次のアクションを呼び出すのに十分であろうと、あなたが任意のカスタムルートを追加する必要はありません。

public class AccountController : Controller 
{ 
    public ActionResult MyActionMethod(string myEmail, Guid myId) 
    { 
     ... 
    } 

    ... 
} 
+0

いつものようにあなたは男です:) –

関連する問題