0

我正在为我的 MVC 3 项目编写一个 Html Helper。

我想返回像“@Html.ActionLink(xxxxx)”这样的 MvcHtmlString,我应该写什么?

目前我有这个代码

        public static MvcHtmlString SetFeaturedFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel, TValue>> expression)
    {
        var isFeatured =Convert.ToBoolean(ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData).Model.ToString());

        string result = "Html.ActionLink(Delete, DeleteComment, Admin, new { Id = @thisComment.CommentId }, null)";

        return MvcHtmlString.Create(result);
    }

它返回整个字符串....但我想要渲染的字符串。所以我该怎么做?谢谢大家。

更新

貌似可以直接退货

见下面的代码

        public static MvcHtmlString SetFeaturedFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel, TValue>> expression)
    {
        var isFeatured =Convert.ToBoolean(ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData).Model.ToString());

        string indicatorText = (isFeatured) ? "Unset Featured" : "Set Featured";

        return htmlHelper.ActionLink(indicatorText, "SetFeaturedIncident", "Admin", null, null);
    }

需要导入 System.Web.Routing 命名空间。

4

1 回答 1

3

删除引号(您想调用函数,而不仅仅是将代码存储在字符串中)和@(那是 Razor,而不是 C#)。您可能需要更改Html为您在(可能)扩展方法中调用辅助参数的任何内容。

此外,Html.ActionLink已经返回MvcHtmlString,所以你可以直接把它放在return.

于 2012-04-28T23:20:08.547 回答