这里是一个的标准配置路线注册的另一种方式:
1.下载RiaLibrary.Web.dll并在ASP.NET MVC的网站项目
2引用它。用[Url]属性对Decodeate控制器方法进行解码:
public SiteController : Controller
{
[Url("")]
public ActionResult Home()
{
return View();
}
[Url("about")]
public ActionResult AboutUs()
{
return View();
}
[Url("store/{?category}")]
public ActionResult Products(string category = null)
{
return View();
}
}
顺便说一句,'?'登录'{?category}'参数意味着它是可选的。您不需要在默认路径明确指定这一点,这就是等于这样的:
routes.MapRoute("Store", "store/{category}",
new { controller = "Store", action = "Home", category = UrlParameter.Optional });
3.更新的Global.asax.cs文件
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoutes(); // This do the trick
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
如何设置默认值,限制?例如:
public SiteController : Controller
{
[Url("admin/articles/edit/{id}", Constraints = @"id=\d+")]
public ActionResult ArticlesEdit(int id)
{
return View();
}
[Url("articles/{category}/{date}_{title}", Constraints =
"date=(19|20)\d\d-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])")]
public ActionResult Article(string category, DateTime date, string title)
{
return View();
}
}
如何设置排序?例如:
[Url("forums/{?category}", Order = 2)]
public ActionResult Threads(string category)
{
return View();
}
[Url("forums/new", Order = 1)]
public ActionResult NewThread()
{
return View();
}
这是一个有用的工具太:http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx – 2008-12-18 07:52:08
嗨凯文,你得到你的答案? – Parminder 2009-07-29 10:33:40