Asp.net 基于选择定义视图

Asp.net 基于选择定义视图,asp.net,asp.net-mvc,routing,webforms,views,Asp.net,Asp.net Mvc,Routing,Webforms,Views,好吧,标题不是很有描述性,但我不确定如何解释,但现在开始 我有一个web应用程序可以使用MVC或用户登录的标准web表单。如果用户注册了多个产品,他们可以选择在它们之间切换。为了本例的目的,让我们假设User1登录并有权访问Product1、Product2和Product3 现在,每种产品都将非常不同,提供不同的功能。我想要的是主视图集中在他们选择的产品周围,而不是重定向到子域 我不想让他们去www.mysite.com/product1或www.mysite.com/product2,而只是

好吧,标题不是很有描述性,但我不确定如何解释,但现在开始

我有一个web应用程序可以使用MVC或用户登录的标准web表单。如果用户注册了多个产品,他们可以选择在它们之间切换。为了本例的目的,让我们假设User1登录并有权访问Product1、Product2和Product3

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

我不想让他们去www.mysite.com/product1或www.mysite.com/product2,而只是去www.mysite.com,不管他们选择了什么产品,并让网站呈现该产品的视图等

哇,这有什么意义吗?我在想也许可以使用会话或其他什么东西和URL重写?有没有什么样的应用程序使用了我可以看一看的同样的功能


谢谢你的帮助,我很感激

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

<input type="hidden">
在codebehind或controller方法中获得值后,可以使用产品id设置会话变量以保持持久性,然后执行重定向到相应的产品页面


这将在ASP.NET和ASP.NET MVC中都适用。

如果您能详细说明,这将非常有用

以下是我对答案的理解:

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

     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");
          }
     }
这将只是一个简单的重定向到特定视图,具体取决于用户的产品


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

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

为此,请想象每个产品在网站中提供不同的功能。假设Product1是一个员工管理领域。因此,当“内部”产品1出现时,他们在菜单等上的唯一选项可能是“查看员工”、“新员工”。。。。现在,当他们选择Product2时,这可能是一个产品管理区域,他们只有与产品相关的选项,因此主菜单等将更改为Product2特定的功能。但他们可以在登录时随时在产品之间切换,当然前提是他们可以访问