我已经用 MVC3 编写了一个完整的站点。我正在尝试使用 Jquery Mobile 构建移动版本。我没有更改我的控制器代码,除了添加检查它是否应该返回移动页面。我的移动登录页面的文档头中有以下内容:
<head>
<title>Mobile Logon</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0-alpha.1/jquery.mobile-1.2.0-alpha.1.min.css" />
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
$(document).bind("mobileinit", function(){
$.extend( $.mobile , {
ajaxEnabled: false
});
});
<script src="http://code.jquery.com/mobile/1.2.0-alpha.1/jquery.mobile-1.2.0-alpha.1.min.js"></script>
</head>
我有一个带有标题和内容的页面。在内容中,我想让用户重定向到注册表单。以下似乎有效:
<form action="Register" method="get" data-ajax="false">
<button type="submit" value="Register for an account"></button>
</form>
这不起作用:(网址在浏览器中似乎正确,但加载的只是一个空白的白色页面)
@using(Html.BeginForm("Register", "Account", FormMethod.Get, null ))
{
<button type="submit" value="Register for an account"></button>
}
当我查看页面源代码时,我注意到两个不同之处:第一个给出了一个带有
action="Register"
而第二个给出了一个表单标签
action="Account/Register"
另一个区别是表单标签中的“data-ajax=false”。
问题:我可以在 Jquery Mobile 中使用 @Html.BeginForm() 吗?如果没有,我如何重定向到不同的控制器?
为什么我在 head 部分的代码没有关闭 Jquery Mobile 的默认 ajax 行为?(我尝试在没有 data-ajax=false 的情况下使用上面的表单标签,我得到了与 @Html.BeginForm 给我的相同的空白屏幕)。
编辑:这是我的登录控制器代码(帐户控制器)
public ActionResult LogOn()
{
//return View();
return SelectView("Logon", null);
}
private ActionResult SelectView(string viewName, object model, string outputType = "html")
{
if (outputType.ToLower() == "json")
{
return Json(model, JsonRequestBehavior.AllowGet);
}
else
{
#if MOBILE
return View(viewName + ".Mobile", model);
#else
if (Request.Browser.IsMobileDevice)
{
return View(viewName + ".Mobile", model);
}
else
{
return View(viewName, model);
}
#endif
}
}
这是我的注册控制器代码:(帐户控制器)
public ActionResult Register(string returnUrl = "")
{
//if no return url supplied, use referrer url.
//Protect against endless loop by checking for empty referrer.
if (String.IsNullOrEmpty(returnUrl) && Request.UrlReferrer != null && Request.UrlReferrer.ToString().Length > 0)
{
return RedirectToAction("Register", new { returnUrl = Request.UrlReferrer.ToString() });
}
return View();
}