Ajax.BeginForm不插入部分视图

时间:2018-04-02 21:16:09

标签: ajax asp.net-mvc partial-views partial ajax.beginform

使用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>

备注:

  • 是的,web.config有UnobtrusiveJavaScriptEnabled = true且ClientValidationEnabled = true
  • 是的,我安装了jquery.unobtrusive-ajax包

你能告诉我我错过了什么或做错了吗? 感谢

1 个答案:

答案 0 :(得分:0)

答案是我在cshtml中错过了不显眼的ajax包含行:

{{1}}