Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Asp.net MVC中实现插件/插件?_C#_Asp.net Mvc_Asp.net Mvc 3_Model View Controller - Fatal编程技术网

C# 如何在Asp.net MVC中实现插件/插件?

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

我无法真正理解我必须实现的一个特性。客户可以有一堆他们付费的插件(插件列表在db表中)。我必须实现只显示客户付费的插件的功能

我知道我可以在视图中创建一堆if语句,但感觉这将是一个有点“黑客”的解决方案,这将是一个痛苦的工作


实现这些功能的正确方法是什么

既然您谈论的是功能而不是插件,我建议您考虑使用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,基本上与你建议的方法相同。