C# 如何在Asp.net MVC中实现插件/插件?
我无法真正理解我必须实现的一个特性。客户可以有一堆他们付费的插件(插件列表在db表中)。我必须实现只显示客户付费的插件的功能 我知道我可以在视图中创建一堆if语句,但感觉这将是一个有点“黑客”的解决方案,这将是一个痛苦的工作C# 如何在Asp.net MVC中实现插件/插件?,c#,asp.net-mvc,asp.net-mvc-3,model-view-controller,C#,Asp.net Mvc,Asp.net Mvc 3,Model View Controller,我无法真正理解我必须实现的一个特性。客户可以有一堆他们付费的插件(插件列表在db表中)。我必须实现只显示客户付费的插件的功能 我知道我可以在视图中创建一堆if语句,但感觉这将是一个有点“黑客”的解决方案,这将是一个痛苦的工作 实现这些功能的正确方法是什么 既然您谈论的是功能而不是插件,我建议您考虑使用with roles来控制对每个功能和/或功能集的访问 public class FeatureController : Controller { [Authorize(Roles = "F
实现这些功能的正确方法是什么 既然您谈论的是功能而不是插件,我建议您考虑使用with roles来控制对每个功能和/或功能集的访问
public class FeatureController : Controller
{
[Authorize(Roles = "Feature1")]
public ActionResult Feature1()
{
// Implement feature here...
return View();
}
[Authorize(Roles = "Feature1")]
[HttpPost]
public ActionResult Feature1(Model model)
{
// Implement feature here...
return View();
}
[Authorize(Roles = "Feature2")]
public ActionResult Feature2()
{
// Implement feature here...
return View();
}
// Other features...
}
然后,担任Feature1
角色的任何用户都将有权访问Feature1
,Feature2
角色将有权访问Feature2
,等等
您可以将AuthorizeAttribute
与组合,以使菜单项仅在用户处于适当角色时可见
全面披露:我是
MvcSiteMapProvider
MEF()的主要贡献者?或者,如果您知道插件都是提前编写的,只需控制访问级别……您需要显示一些代码。听起来您为客户查看模型只需要一个属性IEnumerable
,该属性基于客户ID填充到控制器中,然后在视图中使用循环来显示它们。问题是,我希望能够从任何ViewModel@Timsen,不知道你最后的评论是什么意思。如果你没有展示一些代码来解释你在做什么,我怀疑任何人都不能给出答案。你说的“插件”或“插件”是什么意思?你的意思是“特色”吗?或者这些用户可以上传到系统中的实际“扩展”,而不是专门为他们设计的?或者这些仅仅是你想要为用户启用或禁用的“功能”,这些功能是由你开发的网站内置的吗?我所做的,是为每一个(插件/功能)添加一个新的区域,并为每一个创建自定义ActionFilter,基本上与你建议的方法相同。