【问题标题】:Html.ActionLink in Webgrid returns empty stringWebgrid 中的 Html.ActionLink 返回空字符串
【发布时间】:2012-08-14 07:16:02
【问题描述】:

我正在尝试将 ActionLink 添加到 webgrid 列,但遇到了问题。

如果我像这样添加操作链接,它会起作用并链接到主 UserDetails 页面:

grid.Column(header: "", format: (item) => Html.ActionLink("Details", "UserDetails", "Admin"))

但是,如果我尝试传入网格项的用户,它会返回空字符串。

这个:

grid.Column(header: "", format: (item) => Html.ActionLink("Details", "UserDetails", "Admin", new { username = item.user }, null))

结果如下:

<a href="">

我搜索了这个网站并尝试了一些变体,但都没有奏效。其中:

grid.Column(header: "", format: @<text>@Html.ActionLink("Details", "UserDetails", "Admin", new { username = (string)item.user }, null)</text>)

在我的控制器中,我有:

public ActionResult UserDetails(string username)
    {    
        return View();
    }

这个视图和网格的模型是一个

List<UserInfo>

其中 UserInfo 有“用户”和“活动日期”。

我还是 MVC 的新手,所以我希望我忽略了一些愚蠢的东西。

谢谢。

【问题讨论】:

    标签: c# asp.net-mvc actionlink


    【解决方案1】:

    ActionLink 使用您的路由来确定它是否可以建立链接。如果没有,它有时什么也不返回。从 Reflector(下),注意 htmlHelper.RouteCollection。检查您的 global.asax(并且可能使用您想要构建的 URL 运行您的站点),以确保您的路由表将路由该 URL。

    public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes)
    {
        if (string.IsNullOrEmpty(linkText))
        {
            throw new ArgumentException(MvcResources.Common_NullOrEmpty, "linkText");
        }
        return MvcHtmlString.Create(HtmlHelper.GenerateLink(htmlHelper.ViewContext.RequestContext, htmlHelper.RouteCollection, linkText, null, actionName, controllerName, routeValues, htmlAttributes));
    }
    

    【讨论】:

    • 谢谢,就是这样。我将路由添加到我的 Global.asax 并更正了我处理 UserDetails 模型的方式并且它起作用了。
    猜你喜欢
    • 2016-04-14
    • 2020-01-27
    • 2020-07-11
    • 2015-05-25
    • 2011-05-09
    • 1970-01-01
    • 2012-07-20
    • 2011-12-15
    • 2020-11-23
    相关资源
    最近更新 更多