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());
}
}
}