我需要使用razor设置DropDownList的setectedValue,但由于它在同一页面中多次使用,我无法在Controller中设置所选值,因此如何设置它在视图中?
实际控制器列表代码:
ViewBag.CargaTipos = new SelectList(db.CargaTipos, "Id", "Nome").OrderBy(c => c.Text);
实际观点:
@Html.DropDownListFor(modelItem => item.CargaTipo.Id, (IEnumerable<SelectListItem>)ViewBag.CargaTipos)
型号:
[Table("Cargas")]
public class Carga
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
[ForeignKey("CargaTipo")]
public int CargaTipo_Id { get; set; }
[Display(Name = "Tipo de Carga")]
public virtual CargaTipo CargaTipo { get; set; }
}
[Table("CargaTipos")]
public partial class CargaTipo
{
public CargaTipo()
{
this.Cargas = new HashSet<Carga>();
}
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Nome { get; set; }
public virtual ICollection<Carga> Cargas { get; set; }
}
答案 0 :(得分:5)
无法在SelectedValue
类的构造函数外部设置SelectedList
属性。请改用
ViewBag.CargaTipos = db.CargaTipos;
查看
@Html.DropDownListFor(modelItem => item.CargaTipo.Id,new SelectList(ViewBag.CargaTipos,"Id","Nome",YOUR_SELECTED_VALUE))
答案 1 :(得分:0)
您可以尝试使用Html.DropDownListFor&lt;&gt;的记录行为像这样:
@Html.DropDownListFor(modelItem => modelItem.CargaTipo_Id,
(IEnumerable<SelectListItem>)ViewBag.CargaTipos)
注意在表达式中使用声明的变量。在您的情况下,它是 modelItem 。 而且你必须使用主模型中的CargaTipo_Id,而不是来自referened model的Id。
答案 2 :(得分:0)
我建议您使用一些JQuery
代码执行此操作(您也可以根据您使用JavaScript),但我建议JQuery
。因此,您需要在布局中引用JQuery lib
的链接
<script>
$(document).ready(function ()
{
$("idOfyourDropDownList option[value=Id]').attr('selected','selected');
})
</script>
我认为当您将此脚本放在解决方案上时,默认情况下您将选择项目。
我希望它会有所帮助