ASP.. NET MVC -刷新下拉列表到ViewModel而无需编写DOM代码
本文关键字:代码 DOM ViewModel MVC NET 刷新 下拉列表 ASP | 更新日期: 2023-09-27 17:53:53
我有一个ViewModel到我的应用程序,像这样:
public class ItemViewModel {
public string Name { get; set; }
public string SelectedType { get; set; }
public IEnumerable<Type> Types { get; set; }
public string SelectedSubtype { get; set; }
public IEnumerable<Subtype> Subtypes { get; set; }
}
我已经创建了一个视图来暴露这些属性:
@Html.TextBoxFor(m => m.Name)
@Html.DropDownListFor(m => m.SelectedType,
new SelectList(Model.Types, "ID", "Description"),
"Select a type")
@Html.DropDownListFor(m => m.SelectedSubtype,
new SelectList(Model.Subtypes, "ID", "Description"),
"Select a subtype")
嗯,当我想刷新我的子类型下拉列表时,我必须编写大量的DOM代码来生成新的选项。
$('#SelectedType').change(function() {
$.get('/json/GetSubtypesFromType', { 'type': $(this).val() }, function(result) {
var options = '';
for (var count = 0; count < result.length; count++) {
options += "<option value='" + result[count].ID + "'>" + result[count].Description + "</option>";
}
$('#SelectedSubtype').html(options);
});
});
是否有一种方法将新选项绑定到可枚举的子类型到我的ViewModel
中,而不是编写此代码来生成选项。当我发布我的表单时,我需要检索新的可枚举对象,但我想将新值绑定到ViewModel
集合。
Observation:您正在使用AJAX 'get' ting值,并希望将新值添加到您的DropDownList Helper中。
suggestion: 创建一个自定义Ajax下拉列表助手。
在http://www.codeproject.com/Articles/421640/Creating-a-custom-AJAX-Helper阅读本文
另一个好参考如何使@Ajax.DropDownList等效?
特别有价值的参考http://www.mikeyd.com.au/2009/08/22/dynamically-populate-a-selectdrop-down-list-using-aspnet-mvc-jquery-and-json/
建议2:
使用action partial创建下拉列表执行为@Html.Action("{Action}", {Controller}", new { id = {param})
或从jquery作为$('#dropdowndiv').load('/{Controller}/{Action}')
,动作局部首先调用一个动作方法,然后呈现一个局部视图。这对于想动态创建选择列表的情况非常理想