繁体   English   中英

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

[英]MVC4 ASP.NET Mobile contacts form redirect

我正在尝试使我的网站可移动。 我通过创建一个称为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();
    }

这是我的桌面版EmailSent.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

您可以使用Package Manager控制台并运行以下命令来执行此操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM