我越來越喜歡的網址http://localhost:49671/TestRoutes/Display?f=hi&i=2
如何網址,而不是ID在mvc.net使用路由
只顯示名字,我想它像http://localhost:49671/TestRoutes/Display/hi
我把它從指數的方法。
[HttpPost]
public ActionResult Index(int? e)
{
// return View("Display", new { f = "hi", i = 2 });
return RedirectToAction("Display", new { f = "hi", i = 2 });
}
索引視圖
@model Try.Models.TestRoutes
@using (Html.BeginForm())
{
Model.e = 5 ;
<input type="submit" value="Create" class="btn btn-default" />
}
顯示行動方法
// [Route("TestRoutes/{s}")]
public ActionResult Display(string s, int i)
{
return View();
}
路由配置文件
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Professional", // Route name
"{controller}/{action}/{id}/{name}", // URL with parameters
new { controller = "TestRoutes", action = "Display", s = UrlParameter.Optional, i = UrlParameter.Optional
});
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional
});
你的路由定義需要匹配參數名稱 - 「TestRoutes/Display/{s}/{i}」(只有最後一個參數可以是UrlParameter.Optional) –
我無法正確編寫它,我可以使用屬性代替Maproute ? – Nil
什麼不起作用?它只需要是'routes.MapRoute(name:「Professional」,url:「TestRoutes/Display/{s}/{i}」,新的{controller =「TestRoutes」,action =「Display」});'。但是在你的'Index()'方法中,它需要'return RedirectToAction(「Display」,new {s =「hi」,i = 2});'(不'f) –