2017-06-29 9 views
0

クエリ文字列のような動的な値をコントローラに渡したいと思います。私は文字列を渡していますが、imはコントローラでnullになっています。私は "http://localhost:62666/tracker/MapDetails/sss"というURLを打っていますが、コントローラには何の値も得ていません。私はどこで間違いをしたのかを指摘できますか?URLから渡されたコントローラのパラメータ値を取得できません

コントローラー:

public ActionResult MapDetails(string val) 
{ 
    AssetTracker model = new AssetTracker(); 
    model.deviceid = val; 
    return View(model); 
} 

ビュー:

@model smartpond.Controllers.AssetTracker 
@{ 
    ViewBag.Title = "MapDetails"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<h1> 
    My device id is : @Model.deviceid 
</h1> 
+0

トライます。http:// localhostを:?62666 /トラッカー/ MapDetailsヴァル= SSS – Michael

+0

はいその作業、イム取得しますが、なぜ、単一のパラメータ渡しを使用しながら、次のように渡すこと。 – pvkm

答えて

1

MVCにおけるモデルバインダーは、そのようにMVCのルートに渡されてきた変数をバインドできませんでしたので、あなたは、コントローラにnull値を取得します渡すパラメータに合ったカスタムルートを追加してカスタムバインドを追加するためにモデルバインダーにそれらを識別させる必要がある場合は、ソリューションのapp_startフォルダにあるRouteConfig.csファイルに記述し、追加する必要があります別の名前を持つデフォルトルートの最上部にあります。

routes.MapRoute(
      name: "Overrided", 
      url: "{controller}/{action}/{val}", 
      defaults: new { controller = "Home", action = "Index", val= UrlParameter.Optional } 
     ); 
関連する問題