Ajax.BeginForm 不插入局部视图
Ajax.BeginForm does not insert partial view
运行 ASP.NET MVC 2015 与 C#。
由于 @using (Ajax.BeginForm(...) 而尝试添加部分视图
它所做的只是打开一个新页面,其中包含我的部分视图。我在 Whosebug 中找到了一些答案,但 none 对我有用,除非我遗漏了什么。
场景:
index page here
输入 A、B 或 C,部分视图应位于当前页面下方
new page unexpected here
但它确实会打开一个新页面
控制器:
public class TestController : Controller
{
public ActionResult Index()
{
return View();
}
[ChildActionOnly]
public ActionResult TestPartial()
{
ChoiceViewModel vm = new ChoiceViewModel();
return View(vm);
}
[HttpPost]
public ActionResult SelectChoice(ChoiceViewModel vm)
{
ModelState.Clear();
if (vm.MyChoice == "A")
return PartialView("APartial");
if (vm.MyChoice == "B")
return PartialView("BPartial");
if (vm.MyChoice == "C")
return PartialView("CPartial");
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
}
Index.cshtml:
<h2>Index</h2>
<div>
@Html.Partial("TestPartial")
</div>
<br/>
<div id="GoesHere">
</div>
TestPartial.cshtml:
@model TestPartial.ViewModels.ChoiceViewModel
@using (Ajax.BeginForm("SelectChoice", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "GoesHere", InsertionMode = InsertionMode.Replace }))
{
<div class="form-group">
<p>Give your choice please: A,B or C</p>
@Html.TextBoxFor(x => x.MyChoice, new { @class = "form-control" })
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Select">
</div>
}
APartial.cshtml(还有 B 和 C...)
<p>This is A choice</p>
备注:
- 是,web.config 有 UnobtrusiveJavaScriptEnabled=true 和 ClientValidationEnabled=true
- 是的,我安装了 jquery.unobtrusive-ajax 软件包
你能告诉我我错过了什么或做错了什么吗?
谢谢
答案是我的 cshtml 中缺少 unobtrusive-ajax 包含行:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
运行 ASP.NET MVC 2015 与 C#。 由于 @using (Ajax.BeginForm(...) 而尝试添加部分视图 它所做的只是打开一个新页面,其中包含我的部分视图。我在 Whosebug 中找到了一些答案,但 none 对我有用,除非我遗漏了什么。
场景: index page here 输入 A、B 或 C,部分视图应位于当前页面下方
new page unexpected here 但它确实会打开一个新页面
控制器:
public class TestController : Controller
{
public ActionResult Index()
{
return View();
}
[ChildActionOnly]
public ActionResult TestPartial()
{
ChoiceViewModel vm = new ChoiceViewModel();
return View(vm);
}
[HttpPost]
public ActionResult SelectChoice(ChoiceViewModel vm)
{
ModelState.Clear();
if (vm.MyChoice == "A")
return PartialView("APartial");
if (vm.MyChoice == "B")
return PartialView("BPartial");
if (vm.MyChoice == "C")
return PartialView("CPartial");
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
}
Index.cshtml:
<h2>Index</h2>
<div>
@Html.Partial("TestPartial")
</div>
<br/>
<div id="GoesHere">
</div>
TestPartial.cshtml:
@model TestPartial.ViewModels.ChoiceViewModel
@using (Ajax.BeginForm("SelectChoice", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "GoesHere", InsertionMode = InsertionMode.Replace }))
{
<div class="form-group">
<p>Give your choice please: A,B or C</p>
@Html.TextBoxFor(x => x.MyChoice, new { @class = "form-control" })
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Select">
</div>
}
APartial.cshtml(还有 B 和 C...)
<p>This is A choice</p>
备注:
- 是,web.config 有 UnobtrusiveJavaScriptEnabled=true 和 ClientValidationEnabled=true
- 是的,我安装了 jquery.unobtrusive-ajax 软件包
你能告诉我我错过了什么或做错了什么吗? 谢谢
答案是我的 cshtml 中缺少 unobtrusive-ajax 包含行:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>