我的MVC项目中有两个不同的登录页面,根据用于访问站点的URL,需要显示相关的登录页面(特定的客户端要求)。
我可以根据_layout
中的登录页面名称定义使用哪个_ViewStart
:
if (Context.Request.Path.Contains("LoginG"))
{
Layout = "~/Views/Shared/_LayoutG.cshtml";
}
else {
Layout = "~/Views/Shared/_Layout.cshtml";
}
但是如何根据网址设置初始视图/着陆页?
或者可以在IIS中完成吗?
注意:除了名称之外,两个登录页面实际上都是相同的,因为我必须给它一个不同的名称的唯一原因是为了在{{1}中应用不同的布局}!
答案 0 :(得分:1)
在您的登录ActionResult中,获取returnUrl参数,该参数表示您来自的URL(并将在成功登录后重定向到)并根据其值返回不同的View,如下所示:
public ActionResult Login(string returnUrl)
{
if (returnUrl == "url1")
{
return View("ViewName1");
}
return View("ViewName2");
}
答案 1 :(得分:0)
我通过删除登录页面的第二个版本(只留下一个具有两个不同版本的布局的登录)并根据网站所在的域_ViewStart
选择布局页面来解决我的问题从以下网址访问:
if (Request.Url.AbsoluteUri.ToString().ToLower().Contains("xxxx"))
{
Layout = "~/Views/Shared/_LayoutG.cshtml";
}
else
{
Layout = "~/Views/Shared/_Layout.cshtml";
}
这节省了必须更新控制器以返回不同视图,并且可以在所有页面上工作。