今天,我在ASP.NET中的一个ASP.NET中的默认值出现了问题。
以下是我在互联网上发现的很多东西之后的做法:
@{
IEnumerable<SelectListItem> secteurSelectList = from x in Model.secteurList select new SelectListItem {
Selected = (x.Id == this.GetSessionSecteurId()),
Text = x.Secteur,
Value = x.Id.ToString()
};
SelectList selectList = new SelectList(secteurSelectList, "Value", "Text", secteurSelectList.Where(x => x.Selected==true).FirstOrDefault().Value); }
@Html.DropDownListFor(m => m.secteur, selectList)下面是对我的实体的描述:在我使用的ViewModel中
public List<AuditSecteur> secteurList { get; set; }这是审计长的目标:
public class AuditSecteur
{
public int Id { get; set; }
public string Secteur { get; set; }
}其结果是:
<select data-val="true" data-val-number="The field Secteur de l'audit must be a number." data-val-required="The Secteur de l'audit field is required." id="secteur" name="secteur">
<option value="1">option1</option>
<option value="2">option2</option>
<option value="3">option3</option>
</select>对于所选的对象,SecteurSelectedList有一个true项:

SelectedList也是:

谢谢你帮我
发布于 2014-12-04 23:56:33
使用强类型帮助程序的全部目的是绑定您的模型属性,因此在
@Html.DropDownListFor(m => m.secteur, selectList)如果secteur的值与您的一个选项的值不匹配,那么它将不会被选中(实际上,因为它找不到匹配,第一个选项将被选中,因为需要选择一些东西)。
但是,您的代码还有许多其他问题。首先创建IEnumerable<SelectListItem> (设置Selected属性是没有意义的,因为它被助手忽略了),然后根据下一行的第一个创建另一个IEnumerable<SelectListItem> ( SelectList) (要点是什么?)生成的选项的值基于AuditSecteur的AuditSecteur属性,但随后绑定到Secteur属性,因此无论如何它都不会回发正确的值。目前还不清楚您如何使用它(您还没有包含模型、控制器或视图),但是正确的方法应该是这样的
视图模型
public class SecteurVM
{
[Display(Name = "Secteur")]
[Required]
public int? SelectedSecteur { get; set; }
public SelectList SecteurList { get; set; }
}控制器
public ActionResult Create()
{
List<AuditSecteur> secteurList = // get AuditSecteur items from the database
SecteurVM model = new SecteurVM();
model.SecteurList = new SelectList(secteurList, "ID", "Secteur");
model.SelectedSecteur = // set the default value you want selected here
return View(model)
}
[HttpPost]
public ActionResult Create(SecteurVM model)
{
// model.SelectedSecteur contains the ID of the selected item
}视图
@model SecteurVM
....
@Html.LabelFor(m => m.SelectedSecteur)
@Html.DropDownListFor(m => m.SelectedSecteur, Model.SecteurList, "--Please select--")
@Html.ValidationMessageFor(m => m.SelectedSecteur)如果SelectedSecteur的值与列表中项的ID属性之一相匹配,则在显示视图时将选择该选项。
发布于 2014-12-04 16:16:10
您将DropDown绑定到模型的secteur属性,而下拉列表的值特征是Id,因此下拉列表在进行预选时不会找到相应的值。
在这里,即使您已经定义了pre-selected项,它也会在呈现时进行reset,所以我建议您将下拉列表绑定到Id而不是secteur。
@Html.DropDownListFor(m => m.Id, selectList)https://stackoverflow.com/questions/27295108
复制相似问题