我有一些屏幕具有重复的复杂UI功能。即下拉A触发对我的控制器的JSON调用,该控制器根据下拉A中选择的值填充下拉B和C中的值。
所以,在屏幕上,我放下A,然后放下B和C.
这是3个屏幕上重复的UI代码(很快就会增长到5个)。但是他们使用相同的Controller调用来完成填充。
有没有办法可以创建局部视图,我可以将其放在一个表单中(表单通过普通的表单帖子提交),然后可以使用所有其他值的值传回选择的值表单提交的项目?部分视图会有标记,以及我用来调用控制器的Javascript吗?
我不确定我是否可以在表格帖子中包含局部视图中的值,并将它们提供给控制器。
我已经开始研究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; }
}
和一个空的AccountCombinationTemplate.cshtml文件。不确定我是否需要控制器等。
我的父模型(我用于视图的主模型)现在引用上面创建的新模型:
public AccountCombinationTemplateModel AccountModel { get; set; }
因此,父模型中的所有属性都已移入AccountCombinationTemplateModel。
在我的观点中,我现在有:
@Html.EditorForModel(Model.Details.AccountModel)
这是在视图上,我希望我的Drop Drop出现。
我在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>
我是现有的控制器,我在上面添加了新的EditorModel作为视图主模型的属性,并填充了它及其属性。
但是当我运行屏幕时,我有@Html.Edit ...,没有任何内容呈现。也没有错误。它好像无法找到视图?