为什么我不能在局部视图中重用Ajax表单中的方法?

时间:2018-06-01 09:36:56

标签: ajax asp.net-mvc

我正在开发一个MVC应用程序,它具有用于提交数据的基本ajax表单。在表单之后,有一个局部视图,其中包含另一个ajax表单,用于将数据提交到下拉框,允许用户在不离开页面的情况下更新其内容。

创建

@model My Project.Models.Cars

@using (Ajax.BeginForm("Create", "Cars", new AjaxOptions
{
    HttpMethod = "POST"
}))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary()

    ... form fields would be here ...
}
@Html.Partial("_Manufacturer")

部分视图(_Manufacturer)

@using (Ajax.BeginForm("AddManufacturer", "AnotherController", new AjaxOptions
{
    HttpMethod = "POST"
}))
{
        @Html.AntiForgeryToken()
        @Html.ValidationSummary()

    ... form fields for populating dropdown list ...
}

当我尝试在局部视图中提交ajax表单时,我收到错误:

  

汽车/ AddManufacturer未找到404资源

它应该使用的控制器是AnotherController,如上面的表格所示。我不想创建多个表单和方法,我想重用我拥有的方法。它有没有理由这样做,有什么我可以做的吗?

1 个答案:

答案 0 :(得分:0)

有时,partials会根据调用它们的位置呈现不同的URL。

检查您的网页,看看在第二张表单上呈现的网址是否正确。如果是这种情况,那么找一个可以正确解析路由的方法重载。

以下是重载列表: https://docs.microsoft.com/en-us/previous-versions/aspnet/web-frameworks/dd492974(v=vs.118)