【发布时间】:2023-04-04 01:24:01
【问题描述】:
我在 MVC 5 中有一个基本的 ajax 调用设置,但似乎我的 Ajax 表单实际上是在发布完整的表单,而不是在主视图中返回 PartialViewResult,整个窗口只是使用 PartialView 呈现结果
建议我在这里可能缺少什么?
我的 _Layout.cshtml 中也有以下 jquery 渲染
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
主视图
@{
ViewBag.Title = "Puzzles 1 & 2";
}
<h2>@ViewBag.Title</h2>
<div>
@Html.Partial("Puzzle1Form")
</div>
部分视图
@model SixPivot_Code_Puzzles.Models.Puzzle1Model
@using (Ajax.BeginForm("Puzzle1","Puzzles",new AjaxOptions {
InsertionMode = InsertionMode.Replace,
HttpMethod = "POST",
UpdateTargetId = "puzzle1-result",
}))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Puzzle1</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.IntegerList, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.IntegerList, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.IntegerList, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Find Largest No." class="btn btn-default" />
</div>
</div>
</div>
}
<div id="puzzle1-result"></div>
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
}
控制器
[HttpPost]
public PartialViewResult Puzzle1(Puzzle1Model model)
{
if (ModelState.IsValid)
{
Puzzle1Model result = new Puzzle1Model();
result.LargestInteger = FindLargestInt(model.IntegerList).ToString();
result.IntegerList = model.IntegerList;
return PartialView("Puzzle1FormResult",result);
}
else {
return PartialView("Puzzle1Form",model);
}
}
PartialViewResult 成功 (Puzzle1FormResult.cshtml)
@model SixPivot_Code_Puzzles.Models.Puzzle1Model
<div>
<h4>Largest Integer</h4>
<hr />
<p>
Largest Integer for the list "@Model.IntegerList" is : @Model.LargestInteger
</p>
</div>
【问题讨论】:
标签: ajax asp.net-mvc asp.net-mvc-5