在视图中设置下拉列表选定值

时间:2014-04-21 16:04:40

标签: c# asp.net asp.net-mvc razor

我需要使用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; }
}

3 个答案:

答案 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>

我认为当您将此脚本放在解决方案上时,默认情况下您将选择项目。

我希望它会有所帮助