还有其他人在使用 MVC3、JQuery 1.7.1 和 JQuery Mobile 1.1.0 时遇到问题吗?每当我提交标准 MVC 表单时,我的 URL 来自:
本地主机/站点/控制器/操作
至
本地主机/站点/控制器/动作#/控制器/动作
我正在简化一个非常混乱的现有站点,因此我正在通过控制器清理和删除不需要的 jquery 表单处理并仅使用 Razor 来处理控制器。我想知道我的项目中是否存在冲突,但我设法从一个新项目中复制了它:
打开VS2010,新建Empty MVC3 Project——即下面没有提到的都是默认的MVC项目
添加测试控制器:
using System.Web.Mvc;
using MvcApplication1.Models;
namespace MvcApplication1.Controllers
{
public class TestController : Controller
{
public ActionResult Testing()
{
return View(new TestModel());
}
[HttpPost]
public ActionResult Testing(TestModel testModel)
{
if (ModelState.IsValid)
{
//Temp for examples sake
ModelState.AddModelError("EmailAddress", "Account not found.");
}
return View();
}
}
}
添加测试模型:
using System.ComponentModel.DataAnnotations;
namespace MvcApplication1.Models
{
public class TestModel
{
[Required(ErrorMessage = "Email is required.")]
[DataType(DataType.EmailAddress)]
[StringLength(50, ErrorMessage = "Email too long.")]
public string EmailAddress { get; set; }
}
}
使用视图测试添加视图文件夹测试:
@model MvcApplication1.Models.TestModel
@using (Html.BeginForm("Testing", "Test", FormMethod.Post))
{
<div id="divForgotPassword">
<fieldset data-role="fieldcontain">
<legend>Forgot Password</legend>
<div id="editor-label">
<label for="txtLogonID">
Email Address:</label></div>
<div id="editor-field">
@Html.TextBoxFor(m => m.EmailAddress, new { type = "email" })
<br />
@Html.ValidationMessageFor(m => m.EmailAddress)</div>
<input type="submit" value="Reset Password" data-role="button" data-inline="true" />
</fieldset>
</div>
}
运行并访问http://localhost:65298/Test/Testing 点击重置密码,验证器工作,URL 不变
将 jquery.mobile-1.1.0.js 和 jquery-1.7.1.min.js 添加到脚本文件夹
在 _Layout.cshtml 中添加: 并将 jquery 1.5.1 更改为 1.7.1
运行并再次访问我们的页面点击重置密码,验证器工作,但现在你有: http://localhost:65298/Test/Testing#/Test/Testing
我一定做错了什么??这样做的主要问题是,我不喜欢使用该 URL 运行其他 javascript。我也担心它会干扰其他东西,而且它看起来很丑而且一定是错的......
提前谢谢了!!