【问题标题】:Defining Views Based On Selection基于选择定义视图
【发布时间】:2010-12-17 05:09:57
【问题描述】:

好吧,标题不是很具有描述性,但我不确定如何解释,但这里就是!

我有一个用户登录的网络应用程序(可以使用任何一种 MVC 或标准网络表单)。如果用户注册了多个产品,他们将可以选择在它们之间进行切换。在本示例中,假设 User1 登录并有权访问 Product1、Product2 和 Product3。

现在,每种产品都将大不相同,并提供不同的功能。我想要的是围绕他们选择的产品而不是重定向到子域的主要视图。

不想想要做的是让他们去 www.mysite.com/product1 或 www.mysite.com/product2 但只是 www.mysite.com 不管他们选择的产品并让网站呈现该产品的视图等。

哇,这有什么意义吗?我在想mabe使用会话或其他东西和URL重写?是否有任何示例应用程序使用了我可以查看的相同类型的功能?

感谢您的帮助,我不胜感激!

【问题讨论】:

    标签: asp.net asp.net-mvc routing webforms views


    【解决方案1】:

    要将产品 ID 保留在 URL 之外,您可以通过包含所需产品 ID 的隐藏控件将您的产品选择页面post 发送到服务器。

    <input type="hidden">
    

    一旦您在代码隐藏或控制器方法中获得了值,您就可以使用产品 ID 设置一个 Session 变量以保持持久性,然后执行重定向到相应的产品页面。

    这适用于 ASP.NET 和 ASP.NET MVC。

    【讨论】:

      【解决方案2】:

      如果你能详细说明,那会很有帮助。

      根据我的理解,这是我对答案的看法:

      您可以做的是在用户登录后将其重定向到特定页面。

           public ActionResult Login()
           {
                //Login Logic
                if(UserLoggedIn)
                {
                   User MembershipUser = GetUser(User.Identity.Name);
                   if(MembershipUser.HasProduct1)
                       return View("Product1");
                   else if(MembershipUser.HasProduct2)
                       return View("Product2");
                   else if(MembershipUser.HasProduct3)
                       return View("Product3");
                }
           }
      

      这只是一个简单的重定向到特定视图,具体取决于用户的产品。

      如果你能详细说明,我可以给出更好的答案。

      【讨论】:

      • 想象一下(为此)每种产品在网站内提供不同的功能。假设 Product1 是一个员工管理区域。因此,当“内部”product1 时,他们在菜单等上的唯一选项可能是“查看员工”、“新员工”……现在,当他们选择可能是产品管理区域的 Product2 时,他们只会有与产品相关的选项,因此主菜单等将更改为产品 2 特定功能。但是他们可以在登录时随时在产品之间跳转(如果他们当然可以访问)
      【解决方案3】:

      我想我将使用 ASP.NET MVC 中的自定义 ViewEngine。我可以根据以这种方式选择的产品呈现不同的视图。感谢大家的建议。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-07
        • 1970-01-01
        • 2014-04-20
        相关资源
        最近更新 更多