【问题标题】:@Html.ActionLink one works and one does not@Html.ActionLink 一种有效,一种无效
【发布时间】:2012-04-24 13:26:12
【问题描述】:

我有两个@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 到函数中???

【问题讨论】:

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


    【解决方案1】:

    这样使用

    @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"} )
    

    【讨论】:

    • 你的回答和我的错误一样:名称项在当前上下文中不存在?
    • @Spangle:你收到错误了吗?您是否有自定义路由定义而不是默认路由定义?
    • 您的回答是正确的 我已经更改了我的页面,有时可能只是需要一些调整!
    猜你喜欢
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 2014-02-04
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多