Javascript MVC中的重复UI功能

Javascript MVC中的重复UI功能,javascript,jquery,asp.net-mvc,forms,twitter-bootstrap,Javascript,Jquery,Asp.net Mvc,Forms,Twitter Bootstrap,我有几个屏幕复制了复杂的UI功能。i、 e.下拉A触发对我的控制器的JSON调用,该调用根据下拉A中选择的值填充下拉B和C中的值 所以,在屏幕上,我下拉A,然后在下面,B和C 这是在3个屏幕上重复的UI代码(很快会增加到5个)。但是它们使用相同的控制器调用来进行填充 是否有一种方法可以创建一个局部视图,我可以将其放置在一个表单中(表单通过普通表单post提交),然后选择的值可以与提交的所有其他表单项的值一起传递回去?部分视图将具有标记,以及我用来调用控制器的Javascript 我不确定是否可以

我有几个屏幕复制了复杂的UI功能。i、 e.下拉A触发对我的控制器的JSON调用,该调用根据下拉A中选择的值填充下拉B和C中的值

所以,在屏幕上,我下拉A,然后在下面,B和C

这是在3个屏幕上重复的UI代码(很快会增加到5个)。但是它们使用相同的控制器调用来进行填充

是否有一种方法可以创建一个局部视图,我可以将其放置在一个表单中(表单通过普通表单post提交),然后选择的值可以与提交的所有其他表单项的值一起传递回去?部分视图将具有标记,以及我用来调用控制器的Javascript

我不确定是否可以将这些值包含在部分视图中的表单post中,并使其可供控制器使用

我已经开始调查EditorTemplates,但我所拥有的只是模板的模型:

public class AccountCombinationTemplateModel
{
    public int SourceEntityId { get; set; }
    public int DestinationEntityId { get; set; }
    public int EntityEventTypeId { get; set; }

    public List<SelectListItem> Accounts { get; set; }
    public List<SelectListItem> ThirdParties { get; set; }

}
因此,父模型中的所有属性都已移动到AccountCombinationTemplateModel中

在我看来,我现在有:

@Html.EditorForModel(Model.Details.AccountModel)
这在视图中,我希望下拉列表出现在该视图中

我在我的view\Shared\EditorTemplates文件夹中创建了一个名为AccountCombinationTemplate.cshtml的新空视图

该视图如下所示:

@model BasicFinanceUI.Models.AccountCombinationTemplateModel
<div class="row">
    <div class="form-group col-xs-12 col-lg-3 divAccounts">
        @Html.LabelFor(x => x.EntityEventTypeId)
        @Html.DropDownListFor(x => x.EntityEventTypeId, Model.EntityEventTypes, new { @class = "EntityEventTypeId form-control", @onchange = "changeDisplay(this)" })
    </div>
    <div class="form-group col-xs-12 col-lg-5 divAccounts">
        @Html.LabelFor(x => x.SourceEntityId)
        @Html.DropDownListFor(x => x.SourceEntityId, Model.Sources, new { @class = "SourceEntityId form-control" })
    </div>
    <div class="form-group col-xs-12 col-lg-5 divAccounts">
        @Html.LabelFor(x => x.DestinationEntityId)
        @Html.DropDownListFor(x => x.DestinationEntityId, Model.Destinations, new { @class = "DestinationEntityId form-control" })
    </div>
</div>
@model BasicFinanceUI.Models.accountCombination模板模型
@LabelFor(x=>x.EntityEventTypeId)
@Html.DropDownListFor(x=>x.EntityEventTypeId,Model.EntityEventTypes,新的{@class=“EntityEventTypeId表单控件”,@onchange=“changeDisplay(this)”})
@LabelFor(x=>x.SourceEntityId)
@Html.DropDownListFor(x=>x.SourceEntityId,Model.Sources,新的{@class=“SourceEntityId表单控件”})
@Html.LabelFor(x=>x.destinationTityId)
@Html.DropDownListFor(x=>x.destinationTityId,Model.Destinations,新的{@class=“destinationTityId表单控件”})
我在我现有的控制器中添加了新的EditorModel作为视图主模型的属性,并填充了它和它的属性


但是当我运行屏幕时,在屏幕上有@Html.Edit…,什么都不会呈现。也没有错误。信息技术好像找不到视图?

第一个下拉列表是如何创建的?你把它绑定到你的模型上了吗?我有一个预感,你实际上可以创建一个编辑器模板。是的,你可以使用局部视图。但是不要将脚本包含在部分视图中,而是将它们包含在主视图中。具体如何实现这一点取决于您的模型,DropDownList是否与您的模型中的属性相关model@AndreiV-目前,我将列表作为“公共列表帐户{get;set;}”传入。我通过初始控制器调用填充这些。但在“触发”下拉列表发生变化时,我用JSON查询调用控制器,并“重新填充”下拉列表。但还不确定这是怎么回事。@Craig,对不起,这是个打字错误-是的,应该是
@Html.EditorFor(m=>m.Details.AccountModel)
@model BasicFinanceUI.Models.AccountCombinationTemplateModel
<div class="row">
    <div class="form-group col-xs-12 col-lg-3 divAccounts">
        @Html.LabelFor(x => x.EntityEventTypeId)
        @Html.DropDownListFor(x => x.EntityEventTypeId, Model.EntityEventTypes, new { @class = "EntityEventTypeId form-control", @onchange = "changeDisplay(this)" })
    </div>
    <div class="form-group col-xs-12 col-lg-5 divAccounts">
        @Html.LabelFor(x => x.SourceEntityId)
        @Html.DropDownListFor(x => x.SourceEntityId, Model.Sources, new { @class = "SourceEntityId form-control" })
    </div>
    <div class="form-group col-xs-12 col-lg-5 divAccounts">
        @Html.LabelFor(x => x.DestinationEntityId)
        @Html.DropDownListFor(x => x.DestinationEntityId, Model.Destinations, new { @class = "DestinationEntityId form-control" })
    </div>
</div>