简介
我正在开发用户可以注册的演示应用程序。用户表有“用户名”字段。“home” Controller 中有“详细”操作,接受字符串“用户名”参数。
代码
public ActionResult Detail (string username)
{
return View();
}
那么 url 将是
www.example.com/home/Detail?username=someparam
问题
我可以这样设置路线吗?
www.example.com/someparam
如果可以的话请告诉我。任何形式的帮助或引用将不胜感激。
感谢您的宝贵时间。
最佳答案
如果您更改路由的定义方式,这是可行的。假设您使用 dot net 4.5.2
查看 App_Start 下的 RouteConfig。
典型的路由定义如下:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
没有什么可以阻止将路线更改为如下所示:
routes.MapRoute(
name: "Default",
url: "{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我们基本上将 Controller 和操作硬编码为某个值,因此现在您只需拥有 url/paramname,它就会达到硬编码组合。
话虽如此,我不会做这样的事情,因为它违背了 MVC 的工作方式
MVC 路由是 url/controller/action。您可以跳过通用内容(例如索引)的操作,并且您的 URL 变为 url/controller。 MVC 需要能够识别您想要点击哪个 Controller 以及哪个操作,并且最好遵守其约定。
此外,每个应用程序通常都会有多个 Controller ,这可以实现良好的关注点分离。现在您已将自己硬编码为只有一个 Controller 和操作。
您所建议的内容可以通过网络表单的方式更轻松地完成,所以也许您想研究一下。
关于asp.net-mvc - 如何从 url : asp.net mvc 隐藏操作和 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38279283/