我正在构建一个 htmlhelper 扩展,但收到此错误:
无效的匿名类型成员声明符。必须使用成员分配、简单名称或成员访问来声明匿名类型成员。
我试图将@User.IsInRole 转换为布尔值但无济于事:(
这是 Razor 标记:
@using htmlHelperstring.Models
@{
    ViewBag.Title = "Home Page";
}
<ul>
    @Html.MyActionLink(
    "<span>Hello World</span>", 
    "about", 
    "home",
    new { id = "123" },
    new { @class = "foo",(bool)(@User.IsInRole("Chef"))}
)
</ul>
帮手:
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace htmlHelperstring.Models
{
    public static class LabelExtensions
    {
        public static IHtmlString MyActionLink(
        this HtmlHelper htmlHelper,
        string linkText,
        string action,
        string controller,
        object routeValues,
        object htmlAttributes,
            bool UserAuthorized
    )
        {
            var li = new TagBuilder("li");
            if (UserAuthorized)
            {
                var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
                var anchor = new TagBuilder("a");
                anchor.InnerHtml = linkText;
                anchor.Attributes["href"] = urlHelper.Action(action, controller, routeValues);
                anchor.MergeAttributes(new RouteValueDictionary(htmlAttributes));
                li.InnerHtml = anchor.ToString();
            }
            else
            {
                li.InnerHtml = string.Empty;
            }
            return MvcHtmlString.Create(li.ToString());
        }
    }
}