如何围绕Url.Content辅助函数创建包装器帮助器?

loy*_*low 5 c# asp.net-mvc asp.net-mvc-4

我想围绕这个现有的帮助器创建一个包装器:

@Content.Url("...")
Run Code Online (Sandbox Code Playgroud)

如何创建一个帮助程序来包装它并为其添加参数?

我的控制器有一个属性:

public bool IsAdmin {get; set;}
Run Code Online (Sandbox Code Playgroud)

我想以某种方式从我的控制器引用这个值,并使用它像:

@MyContent.Url("...", IsAdmin)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?是添加IsAdmin到我的唯一方法ViewModel吗?

Kna*_*ģis 2

您可以将IsAdmin其添加到模型中,也可以将其设置为将值存储在 中的静态属性HttpContext.Current.Items。或者,它可以从 动态读取值HttpContext.Request

public static bool IsAdmin
{
    get { return (HttpContext.Current.Items["IsAdmin"] as bool?) ?? false; }
    set { HttpContext.Current.Items["IsAdmin"] = value; }
}
Run Code Online (Sandbox Code Playgroud)

您可以像这样创建自定义扩展方法

public static Content(this UrlHelper helper, string contentPath, bool isAdmin)
{
    // do something with isAdmin
    helper.Content(contentPath);
}
Run Code Online (Sandbox Code Playgroud)