mvc3 jquery mobile如何使用Html.BeginForm

时间:2012-08-06 22:28:51

标签: asp.net-mvc-3 jquery-mobile

我已经在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();
    }

0 个答案:

没有答案