我应该在MVC局部视图中使用Ajax表单实时添加新数据吗?

我应该在MVC局部视图中使用Ajax表单实时添加新数据吗?,ajax,model-view-controller,partial-views,Ajax,Model View Controller,Partial Views,我想知道是否有更好的方法来完成我正在做的事情,或者我目前的方法是否可行。我目前的做法给了我一点麻烦,所以我需要看看我能做些什么 在我的MVCWeb应用程序中,我有可搜索的下拉列表(由KendoUI小部件处理),我允许用户将缺少的数据添加到为这些下拉列表提供服务的数据库表中 小部件示例 @(Html.Kendo().DropDownList() .Name("Manufacturer") .Filter("contains") .OptionLabel("-- Select --") .DataT

我想知道是否有更好的方法来完成我正在做的事情,或者我目前的方法是否可行。我目前的做法给了我一点麻烦,所以我需要看看我能做些什么

在我的MVCWeb应用程序中,我有可搜索的下拉列表(由KendoUI小部件处理),我允许用户将缺少的数据添加到为这些下拉列表提供服务的数据库表中

小部件示例

@(Html.Kendo().DropDownList()
.Name("Manufacturer")
.Filter("contains")
.OptionLabel("-- Select --")
.DataTextField("ManufacturerName")
.DataValueField("ManufacturerName")
.NoDataTemplate("No Data <a href=\"\\#\" data-toggle=\"modal\" data-target=\"\\#modal_addManufacturer\">Add Manufacturer</a>")
 .DataSource(source => {
     source.Read(read => {
         read.Action("GetManufacturers", "Cars");
     }).ServerFiltering(false);
}))
弹出表单部分视图

@model MyProject.Models.Cars

@using (Ajax.BeginForm("Create", "Cars", new AjaxOptions
{
    HttpMethod = "POST",
    OnSuccess = "NotifySuccess",
    OnFailure = "NotifyFailure"
},
new { @class = "form-horizontal", role = "form" }))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })

    ...Form goes here with widgets etc

}
@Html.Partial("_Manufacturer")
@model MyProject.Models.Manufacturer
<div class="modal fade" id="modal_addManufacturer">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-body">
                @using (Ajax.BeginForm("AddManufacturer", "Cars", new AjaxOptions
                {
                    HttpMethod = "POST",
                    OnSuccess = "Success",
                    OnFailure = "Fail"
                }, new { @class = "form-horizontal", role = "form" }))
                {
                    @Html.AntiForgeryToken()
                    @Html.ValidationSummary()
                    <div class="form-group">
                        @Html.LabelFor(l => l.ManufacturerName, new { @Class = "form-label" })
                        @Html.TextBoxFor(i => i.ManufacturerName, new { @Class = "form-control" })

                        <input type="submit" value="Add" />
                        <input type="reset" value="Reset" />
                    </div>
                }
            </div>
        </div>
    </div>
</div>
@model MyProject.Models.Manufacturer
@使用(Ajax.BeginForm(“AddManufacturer”,“Cars”),新的AjaxOptions
{
HttpMethod=“POST”,
OnSuccess=“Success”,
OnFailure=“Fail”
},新的{@class=“form horizontal”,role=“form”})
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
@LabelFor(l=>l.ManufacturerName,新的{@Class=“form label”})
@TextBoxFor(i=>i.ManufacturerName,新的{@Class=“form control”})
}
这些错误似乎源于以下事实:控制器中的
Edit
方法传递了一个
Id
参数。这就引出了一个最明显的问题,这个方法正确吗?我是否应该在modals中使用ajax表单来动态创建数据,尤其是当它们使用的模型在edit等视图上使用Id参数时会导致问题时


有人能为我提供一些指导吗?

我可以假设Id参数与dropdownlist的值链接吗?还有伴随错误而来的字典,是因为Id吗?Id和下拉列表不相关,它们也不应该是部分视图,因为ajax表单应该自己将数据添加到表中。字典错误是因为预期的类型是
汽车
,但传入的是
制造商
。这就是使用这些局部视图的问题所在,我认为这可能是错误的方法。