比方说我的viewmodel如下:
public class MyViewModel
{
public int? SelectedCategoryId { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
}
观点如下:
@model MyViewModel
@Html.DropDownListFor(
x => x.SelectedCategoryId,
Model.Categories,
"--Select--"
)
在更新视图中,如果模型具有SelectedCategoryId的值,则在下拉列表中未显示该值。 &#34; - 选择 - &#34;总是被选中。如果其Id字段不可为空,则相同的逻辑适用于其他下拉列表。
有什么建议吗?
答案 0 :(得分:0)
建议你一个简单的方法
如果您使用IEnumerable <SelectListItem>
,则无需为维护选定值使用不同的变量。只需在填充Categories
SelectList时选择您的类别。
SelectListItem category = new SelectListItem
{
Text = "CategoryId",
Value = "CatagoryName",
Selected = true
};
Categories.Add(category);
public class MyViewModel
{
public IEnumerable<SelectListItem> Categories { get; set; }
}
.............................................. < / p>
@model MyViewModel
@Html.DropDownList("Name",
Model.Categories,
"--Select--"
)
答案 1 :(得分:0)
最后,如果Id有值,我使用jquery来选择下拉列表。
在视图中,我创建了一个隐藏字段(不要使用@ Html.HiddenFor)
@Html.Hidden("SelectedCategorySubId", Model.SelectedCategorySubId.GetValueOrDefault(), new { @id = "hdnSelectedCategorySubId" })
在JS文件中,在ajax调用的回调方法中(加载下拉列表),在向下拉列表中添加数据后,获取隐藏字段值,然后在下拉列表中选择该值。
$.ajax({
type: 'POST',
url: "GetSubCategory",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify(param),
success: function (subCategoryList) {
if (subCategoryList != null && subCategoryList != '') {
$("#SelectedCategorySubId").append('<option>--- Select ---</option>');
$.each(subCategoryList, function (i, subCategory) {
$("#SelectedCategorySubId").append($('<option/>', {
value: subCategory.Value,
text: subCategory.Text
}));
});
//Set selected value from hidden field
var selectedCategorySubId = $("#hdnSelectedCategorySubId").val();
// alert("Sub Cat" + selectedCategorySubId);
$("#SelectedCategorySubId").val(selectedCategorySubId);
}//end if
else {
//alert("empty subcategoryList " + subCategoryList);
$("#tdSubCategory").hide();
}
}
如果下拉列表更改
,则更新隐藏字段//Update hidden field, if cat changes
$("#SelectedCategorySubId").change(function () {
$("#hdnSelectedCategorySubId").val($(this).val());
});
我希望这有助于某人。