MVC4 剑道项目 Ajax.BeginForm UpdateTargetId 问题
Posted
技术标签:
【中文标题】MVC4 剑道项目 Ajax.BeginForm UpdateTargetId 问题【英文标题】:MVC4 Kendo Project Ajax.BeginForm UpdateTargetId Issue 【发布时间】:2013-01-20 16:49:25 【问题描述】:我刚刚使用现有 MVC3 项目中的一些代码在 MVC4 中启动了一个新项目。我可以强制我的表单 ajax 重新加载特定的 DIV,但不使用正常的提交方法,只能使用测试 doSomthing() javascript 函数。我错过了什么?
澄清一下:第一个按钮不能正常工作,第二个可以 - 但我不想那样做。
查看
@using (Ajax.BeginForm("Method1", null,
new AjaxOptions HttpMethod = "post", UpdateTargetId = "divPartial1" ,
new id = "form1" ))
<div class="data">
@html.LabelFor(x => x.TotalSubmitted, new @class = "total" )<div class="number total">@Html.FormatValue(Model.TotalSubmitted, "0:n0")</div>
...
</div>
<div class="details">
<div id="divPartial1">
@Html.Partial("ReportDashboardAppPartial")
</div>
</div>
<div style="text-align: center;">
<button type="submit" class="k-button"><span class="k-icon k-i-search" /></button>
<button type="button" name="Save" value="Save" onclick="doSomething(); return false;"><span class="k-icon k-i-search" /></button>
</div>
<script type="text/javascript">
function doSomething()
$.ajax(
url: '@Url.Action("Method1", "Controller")',
type: 'post',
data: $('form#form1').serialize(),
success: function (result)
$('#divPartial1').html(result);
);
</script>
_布局
@model BaseViewModel
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
<link href="@Url.Content("~/Content/kendo.compatibility.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/kendo/2012.3.1114/kendo.common.min.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/kendo/2012.3.1114/kendo.dataviz.min.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/kendo/2012.3.1114/kendo.default.min.css")" rel="stylesheet" type="text/css" />
@RenderSection("styles", false)
<script src="@Url.Content("~/Scripts/kendo/2012.3.1114/jquery.min.js")"></script>
<script src="@Url.Content("~/Scripts/kendo/2012.3.1114/kendo.all.min.js")"></script>
<script src="@Url.Content("~/Scripts/kendo/2012.3.1114/kendo.aspnetmvc.min.js")"></script>
@RenderSection("scripts", false)
</head>
<body>
@Html.Partial("_AlertWindow")
<div id="wrapper">
<header>
<div id="logindisplay">
@Html.Partial("_LoginPartial")
</div>
<a href="@Url.Action("Index", "Home")">
<div id="logo"></div>
</a>
<div id="title">
<h1>Ha!</h1>
</div>
@(Html.Kendo().Menu().Name("Menu").BindTo("Main").SecurityTrimming(true))
</header>
<div id="main">
@RenderBody()
</div>
<footer>
<div id="version">@Html.ActionLink("Version " + @Model.CurrentVersion, "About", "Home")</div>
</footer>
</div>
@RenderSection("end_scripts", false)
</body>
</html>
我知道这应该可行。
【问题讨论】:
【参考方案1】:我遇到了同样的问题。解决方法是在_Layout.cshtml页面中添加语句。
@Scripts.Render("~/bundles/jqueryval")
ScriptBundle("~/bundles/jqueryval")的定义如下
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
【讨论】:
注意:我必须将它添加到 _layout.cshtml 的末尾 - 在 RenderBody() 之后。在将我的头撞到代码太久之后救了我。谢谢!以上是关于MVC4 剑道项目 Ajax.BeginForm UpdateTargetId 问题的主要内容,如果未能解决你的问题,请参考以下文章
在剑道窗口内时,局部视图中的 MVC4 Ajax 表单返回整个页面
在 MVC4 razor 中使用“远程”验证处理多个提交按钮
ASP.NET MVC 3 - Ajax.BeginForm 与 jQuery 表单插件