這是我第一次在ASP.Net Mvc上處理路由,我試圖做一些像StackOverflow一樣的問題。使用簡單的自定義路由
我有我叫News
控制器,它富人他的行動像News/
,News/Create
,News/Edit/1
等我想補充的,而不是電網這個自定義路由News/1
,將返回的消息本身的可視化,默認指數News/
節目。
這是我的路線:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "ViewNews",
url: "{controller}/News/{newsId}",
defaults: new { controller = "News", action = "Index" },
constraints: new { newsId = @"\d+" }
);
首當其衝是默認路由,第二個是我試過了,下面this post。但它只是給我這個錯誤(在此網址News/1
):
'/'應用程序中的服務器錯誤。
無法找到該資源。
我想知道我做錯了什麼,一旦它甚至沒有達到行動。如果我嘗試News/
它很好。
我與我的行動做到了這一點:
public ActionResult Index(int? id)
{
if (id != null)
{
var news = _newsService.GetView((int)id);
if (news != null)
{
return View("News", news);
}
else
{
return RedirectToAction("Index", "Home");
}
}
return View();
}
這將是很好,如果有人能告訴怎麼做,像這樣:News/1/news-title-here
。
好了,我沒想到這將有所作爲。我會盡力。 – DontVoteMeDown
是的,我意識到我應該將action參數更改爲'newsId'。它工作的兄弟,謝謝。 – DontVoteMeDown
@DontVoteMeDown沒問題,很高興能幫到你。 – Silvermind