我见过很多人谈论在他们的ASP.NET MVC项目中使用基本控制器.我见过的典型例子就是记录或者CRUD脚手架.基本控制器类有哪些其他好的用途?
尽管我已经在这里待了一段时间,但这是我第一次提出问题,所以请温柔地对待我.
我正在使用ASP.NET MVC 3,我想创建一个自定义,Principal所以我可以存储更多关于当前用户的信息,而不是标准,因此不必经常访问数据库.这是我追求的相当标准的东西.我们先说一下电子邮件地址和用户ID.
我决定将对象存储在缓存中,因为我知道不建议将它存储在会话中.
我也不想继续构建User对象,所以我想覆盖User控制器中的对象.所以我可以去User.UserId保证一些东西.
所以我创建了一个这样的自定义主体:
public class MyPrincipal : IPrincipal
{
public MyPrincipal(IIdentity ident, List<string> roles, string email, Guid userId)
{
this._identity = ident;
this._roles = roles;
this._email = email;
this._userId = userId;
}
IIdentity _identity;
public IIdentity Identity
{
get { return _identity; }
}
private List<string> _roles;
public bool IsInRole(string role)
{
return _roles.Contains(role);
}
private string _email;
public string Email
{
get { return _email; …Run Code Online (Sandbox Code Playgroud) 我一直在研究保护MVC 5应用程序的最佳方法.
我们有一个带有许多WebAPI控制器的Web.csproj以及一个有两个区域的MVC站点 - 一个用于Admin,然后用于面向公众的网站.
阅读本文后说明基本控制器是最好的方法,我决定采用这种方法.
但是,我个人对使用基本控制器并不行(对于我的一些推理,请参阅此stackoverflow答案).
因此,鉴于我正在使用MVC 5(ASP.Net身份和OWIN身份验证) - 任何人都可以了解每种方法的优缺点吗?
我正在使用ninject来注入我的存储库.我想要继承我的基类,但我不能因为它有一个构造函数.
基础控制器:
namespace Orcha.Web.Controllers
{
public class BaseController : Controller
{
public IRepository<string> db;
public BaseController(Repository<string> db){
this.db = db;
Debug.WriteLine("Repository True");
}
}
}
Run Code Online (Sandbox Code Playgroud)
具有继承的控制器: 错误'BaseController'不包含带有0个参数HomeController.cs的构造函数
public class HomeController : BaseController
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×1
base-class ×1
c# ×1
controller ×1
iprincipal ×1
ninject ×1
owin ×1
performance ×1