使用C#运行ASP.NET MVC 2015。 尝试添加部分视图作为@using(Ajax.BeginForm(...)的结果 它所做的只是打开一个包含我的局部视图的新页面。我在stackoverflow中找到了一些答案,但没有一个对我有用,除非我错过了什么。
方案: index page here 类型A,B或C,部分视图预计在当前页面
之下new page unexpected here 但它确实打开了一个新页面
的Controler :
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>
备注:
你能告诉我我错过了什么或做错了吗? 感谢
答案 0 :(得分:0)
答案是我在cshtml中错过了不显眼的ajax包含行:
{{1}}