我有一个MVC4项目,我使用NuGet来安装jQuery 3.1.0和Microsoft.jQuery.Unobtrusive.Ajax 3.2.3。我的包是:
bundles.Add(new ScriptBundle("~/bundles/scripts").Include(
"~/Scripts/jquery-3.1.0.min.js",
"~/Scripts/jquery.unobtrusive-ajax.min.js",
"~/Scripts/jquery.hoverIntent.minified.js",
"~/Scripts/newScript.js",
"~/Scripts/nav.js"
));
我有一个包含Ajax.BeginForm块的视图,如下所示:
@using (Ajax.BeginForm("ValidateBASFID", new AjaxOptions { UpdateTargetId = "ValidateBASFIDError", InsertionMode = InsertionMode.Replace }))
{
<label class="required">BASF ID</label>@Html.ValidationMessageFor(model => model.BASFID, "", new { @class = "text-danger" })
@Html.TextBoxFor(model => model.BASFID, new { style = "width: 50px; margin-right:20px; float:left;", @class = "form-control" })
<input type="submit" value="Validate with BASF ID" class="smallButton" style="float:left;" />
<div id="ValidateBASFIDError" class="validationError text-danger"></div>
<div style="clear:both;"></div>
}
此块指向控制器操作,如下所示:
public ActionResult ValidateBASFID(string BASFID)
{
Models.Repositories.SectionRepository _repository = new Models.Repositories.SectionRepository();
MemberVM Member = _repository.ValidateBASFID(BASFID);
if (Member != null)
{
Member.SaveMemberInfo();
return RedirectToAction("Sections", new
{
SectionSignupMasterID = Member.SectionSignupMasterID,
VerificationEmail = Member.Email,
MemberName = Member.FullName
});
}
else
{
ViewBag.Message = "Invalid BASF ID";
return PartialView("_ValidationError");
}
}
我的想法是,我将使用AJAX回发ID值并对其进行测试。如果ID有效,我将重定向到Sections视图。如果ID无效,则返回错误消息。
正在发生的事情是,有效的ID会重定向到“部分”视图,但页面不会出现。唯一显示的是年份。它只是在页面的左上角显示“2016”。该页面也试图从其他域中检索图像。
如果我只是从包中注释unobtrusive-ajax,那么视图重定向工作正常(但如果ID无效,我就无法收到错误消息)。如果我只是从包中注释jQuery,那么视图重定向工作正常(但其他客户端代码被破坏)。
为什么这两个脚本库似乎不能很好地协同工作,或者我该怎么做才能获得有关这里发生了什么的更多信息?感谢。
答案 0 :(得分:1)
当我评论出不引人注目的库或jQuery时它起作用的原因是因为我打破了ajax并且只是制作了一个标准的回发。
更新:我发现了斯蒂芬的帖子here解决了我的问题。