0

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には「user」と「activedate」があります。

私はまだMVCに慣れていないので、見落としている愚かなことがあることを望んでいます。

ありがとう。

4

1 に答える 1

0

ActionLinkはルーティングを使用して、リンクを構築できるかどうかを判断します。そうでない場合は、何も返さないことがあります。リフレクター(下記)から、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));
}
于 2012-08-13T23:16:02.870 に答える