2009-11-16 31 views
0

那么标题不是很具描述性,但我不完全确定如何解释,但在这里!基于选择定义视图

我有一个用户登录的web应用程序(可以使用或者 MVC或标准的web表单)。如果用户注册了多个产品,他们可以选择在它们之间切换。为了说明这个例子,让用户1登录并访问Product1,Product2和Product3。

现在,每个产品都会有很大的不同,并提供不同的功能。我想要的是将主要观点集中在他们选择的产品上,而不是重定向到子域。

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

哇有没有什么意义?我正在考虑使用会话或东西和URL重写?是否有任何示例应用程序使用了我可以查看的相同类型的功能?

感谢您的任何帮助我欣赏它!

回答

0

要使产品ID不在URL中,您可以将产品选择页面post带有包含所需产品ID的隐藏控件的服务器。

<input type="hidden"> 

一旦你在你的代码隐藏或控制器的方法的价值,然后你可以设置一个会话变量的产品ID,以保持持久性,然后执行重定向到相应的产品页面。

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

0

如果您可以详细说明,那将会有所帮助。

这是我拍的答案,从我的理解:

你可以做他们登录后重定向用户到指定的页面。

 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"); 
      } 
    } 

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

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

+0

想象一下(为此)每个产品在网站内提供不同的功能。比方说,Product1是一个员工管理区域。因此,在'product1'内部时,他们在菜单上的唯一选项可以是'查看员工','新员工'......现在,当他们选择Product2这可能是一个产品管理区域时,他们只会有产品相关选项,所以主菜单等将更改为产品2特定功能性。但是,他们可以在登录时随时跳转产品(如果他们有权访问课程) – Wayne 2009-11-16 20:58:03

0

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