在视图中使用id问题在Mvc4中进行路由

时间:2013-06-10 07:46:24

标签: asp.net-mvc asp.net-mvc-4 url-routing

事件控制器

  public class EventController : Controller {

  public ViewResult Browse(Int32 EventId) {
   return View();
    }
  } 

浏览-视图

 @model IEnumerable<Events.WebUI.Models.EventModel>
 @foreach (var e in Model) {
 <div id="event-content">
 <img src="@e.LogoUrl" width="512px" title="event header" height="83px">
 </div>
 <div class="event-text">
  @e.EventName
 @Html.ActionLink(@e.EventName, "Browse", "Event", new { EventId = @e.EventId })
 </div>

这里我想使用action方法,以便它应该路由到id为localhost / Event / Browse / 1的动作链接,并且在悬停时它应该显示链接

请帮我解决这个问题,我也路由了route.config中的路径

2 个答案:

答案 0 :(得分:1)

这里有两个选项:

<强> 1。适用于所有类似案例的常规设置。

routes.MapRoute("Events", "{controller}/{action}/{eventId}", new {
            controller = "Home",
            action = "Index",
            eventId = UrlParameter.Optional
        });

<强> 2。特定设置仅适用于此情况。

routes.MapRoute("EventsSpecific", "Event/Browse/{eventId}",
                            new {
                                controller = "Event",
                                action = "Index",
                                eventId = UrlParameter.Optional
                            });

您需要在App_Start内的RouteConfig.cs文件中的RouteCollection中应用此功能。但我以前从未尝试route.config,但我相信它们不应该有很大的不同。

最后一件事。 使用 Camel Case 作为参数名称,例如eventId,而不是EventId。这只是一种最佳做法。

希望这有帮助。

答案 1 :(得分:0)

@Html.ActionLink(@e.EventName, "Browse", "Event", new { EventId = @e.EventId },null)
  

URL将是 - localhost / Event / Browse?EventId = 1

@Html.ActionLink(@e.EventName, "Browse", new { EventId = @e.EventId })
  

URL将类似于 - localhost / Event / Browse / 1

这两种方法都适合你。