我想知道创建控制器结构的最佳方法。
假设我有几个事件,每个事件我可以有多个设备。
我的想法是有这样的事情:
http://mydomain/event/1/device/4
因此,我可以访问deviceId 4(属于eventId 1)。
我应该有两个不同的控制器吗?一个用于事件和用于设备或设备信息的控件必须位于EventController中吗?
如何在RouteConfig中使用此路由?
设置方式完全取决于您。您可以使用单独的控制器或相同的控制器。没关系
就路由而言,如果您使用的是标准MVC路由,则需要为此创建一个自定义路由:
routes.MapRoute(
"EventDevice",
"event/{eventId}/device/{deviceId}",
new { controller = "Event", action = "Device" }
);
这将与以下内容相对应:
public class EventController : Controller
{
public ActionResult Device(int eventId, int deviceId)
{
...
}
}
只需确保将其放置在默认路线之前,即可抢先。有关自定义路由的更多信息,请参见:http : //www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/creating-custom-routes-cs
另外,在MVC5 +中,您可以使用属性路由,如果您正在做很多类似的事情,这将使定义自定义路由变得更加容易。在中RouteConfig.cs
,取消注释行:
// routes.MapMvcAttributeRoutes();
然后,在您的操作中定义路线,例如:
[Route("event/{eventId}/device/{deviceId}")]
public ActionResult Device(int eventId, int deviceId)
{
...
您还可以[RoutePrefix]
在控制器类上使用,以移动部分路线以应用于整个控制器。例如:
[RoutePrefix("event")]
public class EventController : Controller
{
[Route("{eventId}/device/{deviceId}")]
public ActionResult Device(int eventId, int deviceId)
{
...
}
}
有关属性路由的更多信息,请参见:http : //blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句