我越来越喜欢的网址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) –