2016-09-14 3 views
0

私はBlogという名前のコントローラを持っています。 私はこのような作用を有する:アクションが2つのパラメータを持つときに経路を見つけることができません - Asp.Net MVC

[Route("{code:int}/{title?}")] 
public virtual ActionResult Index(int code, string title) 
{ 
    var postModel = _blogService.Get(code.ToUrlDecription()); 
    return View(postModel); 
} 

私はこれらのURLを入力し、それらのすべてが見つからないを返しました:

  • localhost:7708/Blog/index/12/post-title
  • localhost:7708/Blog/index/12;
  • localhost:7708/Blog/12/post-title

私は以下のようなルートを書き込もうとしましたが、結果は同じであった:

routes.MapRoute(
    name: "showblogpost", url: "{controller}/{action}/{code}/{title}", 
    defaults: new { 
     controller = "Blog", 
     action = "Index", 
     title = UrlParameter.Optional 
    }, 
    namespaces:new string[] { "Web.Controllers" } 
); 
+0

[ルート]属性が必要な理由は何ですか? – saniokazzz

+0

私は多分 'ルート属性'とすることができると思う – Rahimi

答えて

1

ことの一つは、アクションとマッピングルート上に両方の属性[Route]を使用する必要はありません。それによると、それは私が提案する何localhost:7708/showblogpost/12

でなければなりませんMapRouteに指定された経路でlocalhost:7708/12 あるべきルートので、あなたは、パラメータのみを指定したあなたの属性で

[Route]がある - あなたの属性を削除しますあなたのルートにMapRouteという名前を付けてURLに表示したいのですが、使用していないので、アクションから "string title"パラメータを削除することもできます。

関連する問題