MVC3、JQuery 1.7.1、JQuery Mobile 1.1.0で問題を抱えている人は他にいますか?標準のMVCフォームを送信すると、URLは次のようになります。
localhost / site / controller / action
に
localhost / site / controller / action#/ controller / action
私は非常に厄介な既存のサイトを単純化している最中なので、コントローラーを介して、コントローラーが不要な場所でjqueryフォーム処理をクリーンアップして削除し、Razorを使用することで作業しています。プロジェクト内の何かが競合しているかどうか疑問に思いましたが、新しいプロジェクトからそれを複製することができました。
VS2010を開き、新しい空のMVC3プロジェクト-つまり、以下に記載されていないものはすべてデフォルトのMVCプロジェクトです
TestControllerを追加します:
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();
}
}
}
TestModelを追加します。
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 Hit Reset Passwordを実行してアクセスします。 バリデーターは機能し、URLは変更されません
jquery.mobile-1.1.0.jsとjquery-1.7.1.min.jsをscriptsフォルダーに追加します
_Layout.cshtmlに追加:そしてjquery1.5.1を1.7.1に変更します
実行して、もう一度ページにアクセスします。パスワードのリセットを押すと、バリデーターは機能しますが、次のようになります 。http:// localhost:65298 / Test / Testing#/ Test / Testing
私は何か間違ったことをしているに違いありませんか?これに関する主な問題は、そのURLで、私が持っている他のjavascriptを実行したくないということです。私はまた、それが他の何かと干渉するのではないかと心配しています、そしてそれは醜く見えて間違っているに違いありません...
よろしくお願いします!!