@ Html.ActionLink一个工作,一个不工作

时间:2012-04-24 13:26:13

标签: asp.net-mvc asp.net-mvc-3 razor html.actionlink

我有两个@ Html.ActionLink是一个有效,有一个没有,我无法弄清楚为什么?

它们都在同一个控制器中:StoreController并且都在不同的控制器中调用ActionResults,这是一个可以工作并在Director类中调用Index函数的函数:

<ul>
@foreach (var item in Model)
{
    <li>
    <h2>@item.Title</h2>
    </li>
    <li class = "lihead">
    Directed by 
    @Html.ActionLink((string)item.Director.Name, "Index", "Director", new { searchString = item.Director.Name }, null)
    </li>
    <li>
    <i>@item.Synopsis</i>
    </li> 
    <li class = "lihead">
    Price per ticket £
    @item.Price
    </li>        
}

这是不起作用的那个:

 @foreach (var item in Model) {
        @Html.ActionLink("Check Availability", "CheckAvail", "Booking", new { id = item.ShowId })

}

当我希望它在BookingController中调用CheckAvail函数时,这个在StoreController中调用。但是当我修改它时它确实有效:

 @foreach (var item in Model) {
        @Html.ActionLink("Check Availability", "CheckAvail", "Booking")}

但是我需要它来通过ShowId来实现函数???

1 个答案:

答案 0 :(得分:2)

像这样使用

@Html.ActionLink("Check Availability", "CheckAvail", "Booking", new { @id = item.ShowId },null)

正在使用此重载

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    string controllerName,
    Object routeValues,
    Object htmlAttributes
)

http://msdn.microsoft.com/en-us/library/dd504972.aspx

最后一个参数是HTML属性。如果您要传递一些HTML属性,则将其传递给那里而不是null

@Html.ActionLink("Check Availability", "CheckAvail", "Booking", new { @id = item.ShowId },new { @class="myCssClass"} )