2013-12-17 61 views
0

我已经开始做ASP.NET MVC,但我不知道从哪里开始解决这个问题。ASP.NET MVC路由入门

我已经创建了一个默认的应用程序,并且我创建了一个EventModel,EventController和一系列默认的事件视图。这一切都正常工作。

不过,我想在下面的方式路由工作:

  1. 域/事件 - >列出了所有事件,有点像域/事件的默认操作
  2. 域/事件/ 3 - >显示特定事件(ID为3),就像domain/details/3在默认情况下一样。
  3. domain/event/cool-event - >根据它的'slug'显示一个特定事件,这是EventModel的一个属性,它是Event /事件/编辑/ 3 - >编辑事件的属性。

我一直在玩路由器,我不能让它像我想要的那样表现。上述逻辑是否容易实现?

+1

你检查[属性路由(http://blogs.msdn.com/b/webdev/archive/2013/10/17 /attribute-routing-in-asp-net-mvc-5.aspx)呢? –

+0

它应该很容易,是的 - 这是一个标准方案。所有路线都很容易区分(2/3根据数字检查)。 – McGarnagle

回答

1

使用Attribute Routing它可能是这样的(未经测试):

public class EventController : Controller 
{ 
    //1. domain/events -> lists all events, sort of like domain/event does by default 
    [Route("events")] 
    public ActionResult Index() 
    { 
     //TODO: Add Action Code 
     return View(); 
    } 

    //2. domain/event/3 -> show a specific event (ID of 3), just like domain/details/3 does by default. 
    [Route("event/id")] 
    public ActionResult Details(int id) 
    { 
     //TODO: Add Action Code 
     return View(); 
    } 

    //3. domain/event/cool-event -> show a specific event based on it's 'slug', which is a property of the EventModel 
    [Route("event/{slug?}")] 
    public ActionResult ViewEvent(string slug) 
    { 
     //TODO: Add Action Code 
     return View(); 
    } 

    //4. domain/event/edit/3 -> edits the event. 
    [Route("event/edit/id")] 
    public ActionResult Edit(int id) 
    { 
     //TODO: Add Action Code 
     return View(); 
    } 
} 
+1

ooo属性路由很有光泽! – William