MVC4 ASP.NET 移动联系人表单重定向



我正在尝试使我的网站为移动做好准备。我通过创建一个名为Index.Phone的重复索引页面来做到这一点。进展顺利。除了我使用移动设备提交联系人页面外,大多数事情都被正确检测到。提交联系人表格后,我正在尝试重定向到感谢页面。我可以在桌面上毫无问题地做到这一点。当我使用移动设备执行此操作时,它会重定向到我的EmailSent.cshtml(桌面页面),而不是我的EmailSent.Phone.cshtml。我相信这是由于来自控制器的重定向,而不是来自我相信会使用我整理的global.asax的客户端。

这是被调用的 HomeController 操作。

public ActionResult Contact(ContactModel pContactModel)
    {
        if (ModelState.IsValid)
        {
            bool myBool = SendEmail(pContactModel);
            if (myBool == false)
            {
                TempData["emailSent"] = "false";
                return RedirectToAction("Contact");
            }
            else
            {                    
                    return RedirectToAction("EmailSent");  
            }
        }
        return View();
    }

这是我的桌面电子邮件发送.cshtml...

@{
Layout = "~/Views/Shared/_Layout.cshtml";
Page.Title = "desktop";

}

这是我的EmailSent.Phone.cshtml,我试图通过上面的重定向来调用它。

   @{
Layout = "../Shared/_Layout.Phone.cshtml";
Page.Title = "mobile";

}

谢谢你给我的任何帮助。为了简单起见,我省略了这两个文件的正文。

你可以

做的只是根据@screen的大小使你的css有条件,或者你可以通过浏览器。您必须以某种方式创建一个条件来检查您拥有的浏览器类型才能呈现特定视图,因此我会尝试通过 css

我不能保证这是修复程序,但是......

MVC 4 RC 和 RTM 中存在一个错误,导致视图缓存引擎出现问题。大约 15 分钟后,DefaultDisplayMode将被忽略。在此处阅读更多相关信息: http://blogs.msdn.com/b/rickandy/archive/2012/09/17/asp-net-mvc-4-mobile-caching-bug-fixed.aspx

您需要确保安装此 Nuget 包的版本 1.0.1 来修复此错误:http://www.nuget.org/packages/Microsoft.AspNet.Mvc.FixedDisplayModes/1.0.1

可以使用程序包管理器控制台并运行以下命令执行此操作:

Install-Package Microsoft.AspNet.Mvc.FixedDisplayModes -Version 1.0.1

本质上这就是

问题的解决方案。谢谢。

public ActionResult EmailSent() { return View(); }        
    [HttpPost]
    public ActionResult Contact(ContactModel pContactModel)
    {
        if (ModelState.IsValid)
        {        
            bool myBool = SendEmail(pContactModel);
            if (myBool == false)
            {
                TempData["emailSent"] = "false";
                if (Request.Browser.IsMobileDevice) { return View("Index.Phone"); } 
                else { return RedirectToAction("Contact"); }
            }
            else
            {
                if (Request.Browser.IsMobileDevice) { return View("EmailSent.Phone"); } 
                else { return RedirectToAction("EmailSent"); }
            }
        }
        else
        {
            if (Request.Browser.IsMobileDevice) { return View("Index.Phone"); }
        }
        return View();
    }

最新更新