【发布时间】:2015-09-26 02:20:54
【问题描述】:
我正在尝试将 MVC 5 应用程序迁移到 ASP.NET 5 MVC 6(Beta 7)。
一起使用 @inherits 和 @model 指令时出现问题。
单独使用时效果很好。
在我的_ViewImports 中,我添加了@inherits 指令以使用带有一些自定义用户属性的基本页面。
public abstract class BaseViewPage<TModel> : RazorPage<TModel>
{
protected MyPrincipal AppUser
{
get
{
return new MyPrincipal(this.User as ClaimsPrincipal);
}
}
}
_ViewImports.cshttml
@inherits CommonWeb.BaseViewPage<TModel>
@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
然后我可以在我的所有视图中使用 AppUser.。
如果我 不 使用强类型视图,则此方法有效。如果我在任何视图中添加@model 指令,继承的视图页面就会消失。
帮助赞赏
更新:
我通过在以前版本的 web.config 中使用自定义 pageBaseType 成功地做到了这一点。
解决方法。
public class ViewHelper
{
ViewContext _context;
public ViewHelper(ViewContext context)
{
_context = context;
}
public MyPrincipal AppUser
{
get
{
return new MyPrincipal(_context.HttpContext.User as ClaimsPrincipal);
}
}
public string ControllerName
{
get
{
return _context.RouteData.Values["controller"].ToString();
}
}
}
查看:
@{ var viewHelper = new ViewHelper(ViewContext);}
为所有视图实现此目的的方法?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-core asp.net-core-mvc