C# 在视图中设置Dropdownlist选定值

C# 在视图中设置Dropdownlist选定值,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,我需要使用razor设置DropDownList的setectedValue,但由于它是一个在同一页面中多次使用的列表,因此我无法在控制器中设置所选值,因此如何在视图中设置它 实际控制人名单代码: ViewBag.CargaTipos = new SelectList(db.CargaTipos, "Id", "Nome").OrderBy(c => c.Text); 实际视图: @Html.DropDownListFor(modelItem => item.CargaTipo.I

我需要使用razor设置DropDownList的setectedValue,但由于它是一个在同一页面中多次使用的列表,因此我无法在控制器中设置所选值,因此如何在视图中设置它

实际控制人名单代码:

ViewBag.CargaTipos = new SelectList(db.CargaTipos, "Id", "Nome").OrderBy(c => c.Text);
实际视图:

@Html.DropDownListFor(modelItem => item.CargaTipo.Id, (IEnumerable<SelectListItem>)ViewBag.CargaTipos)
@Html.DropDownListFor(modelItem=>item.CargaTipo.Id,(IEnumerable)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; }
}
[表格(“Cargas”)]
公共级卡加
{
[关键]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
公共int Id{get;set;}
[必需]
[外汇(“CargaTipo”)]
public int CargaTipo_Id{get;set;}
[显示(Name=“Tipo de Carga”)]
公共虚拟CargaTipo CargaTipo{get;set;}
}
[表(“CargaTipos”)]
公共部分类CargaTipo
{
公共汽车公司()
{
this.Cargas=new HashSet();
}
[关键]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
公共int Id{get;set;}
公共字符串Nome{get;set;}
公共虚拟ICollection Cargas{get;set;}
}

无法在
SelectedList
类的构造函数外部设置
SelectedValue
属性。用这个代替

ViewBag.CargaTipos = db.CargaTipos;
看法


无法在
SelectedList
类的构造函数外部设置
SelectedValue
属性。用这个代替

ViewBag.CargaTipos = db.CargaTipos;
看法


您可以尝试使用Html.dropdownlist的记录行为,如下所示:

@Html.DropDownListFor(modelItem => modelItem.CargaTipo_Id,
    (IEnumerable<SelectListItem>)ViewBag.CargaTipos)
@Html.DropDownListFor(modelItem=>modelItem.CargaTipo\u Id,
(IEnumerable)视图包(CargaTipos)
注意在表达式中使用声明的变量。在您的情况下,它是modelItem
您必须使用主模型中的CargaTipo_Id,而不是引用模型中的Id。

您可以尝试使用Html.dropdownlist的记录行为,如下所示:

@Html.DropDownListFor(modelItem => modelItem.CargaTipo_Id,
    (IEnumerable<SelectListItem>)ViewBag.CargaTipos)
@Html.DropDownListFor(modelItem=>modelItem.CargaTipo\u Id,
(IEnumerable)视图包(CargaTipos)
注意在表达式中使用声明的变量。在您的情况下,它是modelItem
您必须使用主模型中的CargaTipo_Id,而不是引用模型中的Id。

我建议您使用一些
JQuery
代码(您也可以使用JavaScript,具体取决于您),但我建议
JQuery
。因此,您需要在布局中引用
jquerylib
的链接

    <script>
    $(document).ready(function ()
      {
        $("idOfyourDropDownList option[value=Id]').attr('selected','selected');

       })
     </script>

$(文档).ready(函数()
{
$(“idOfyourDropDownList选项[value=Id]”)。attr('selected','selected');
})
我认为,当您将此脚本放在解决方案中时,默认情况下您将选择默认项


我希望它会有所帮助我建议您使用一些
JQuery
代码(您也可以使用JavaScript,具体取决于您),但我建议
JQuery
。因此您需要在布局中引用
JQuery lib
的链接

    <script>
    $(document).ready(function ()
      {
        $("idOfyourDropDownList option[value=Id]').attr('selected','selected');

       })
     </script>

$(文档).ready(函数()
{
$(“idOfyourDropDownList选项[value=Id]”)。attr('selected','selected');
})
我认为,当您将此脚本放在解决方案中时,默认情况下您将选择默认项


我希望这会有帮助,谢谢,但是我在“CargaTipo”下面加了下划线,可能是因为它在foreach中(Model.Cargas中的var项)?对于集合,请使用@Html.EditorFor(x=>x.Collection),不要使用foreach迭代器。在EditorTemplates文件夹中创建强类型视图,命名类似于集合项类名。还有一个问题,你可以使用DropDownListFor方法的常规语法。要迭代所有的Cargas吗?有要检查的示例链接吗?有。在您的情况下,隐藏迭代所有Cargas
EditorFor
是适用的方法。它在
EditorFor
方法上有很好的功能。若有表达式从方法的参数返回的集合,那个么该方法将迭代接收到的集合,并为每个元素呈现模板。在您的情况下,隐藏迭代所有Cargas
EditorFor
是适用的方法。如果您的视图收到类似于
IEnumerable
的内容,您也可以使用
EditorForModel
您好,谢谢,但我会在“CargaTipo”下面加下划线,可能是因为它位于foreach(Model.Cargas中的var项)中?对于集合,请使用@Html.EditorFor(x=>x.Collection),不要使用foreach迭代器。在EditorTemplates文件夹中创建强类型视图,命名类似于集合项类名。还有一个问题,你可以使用DropDownListFor方法的常规语法。要迭代所有的Cargas吗?有要检查的示例链接吗?有。在您的情况下,隐藏迭代所有Cargas
EditorFor
是适用的方法。它在
EditorFor
方法上有很好的功能。若有表达式从方法的参数返回的集合,那个么该方法将迭代接收到的集合,并为每个元素呈现模板。在您的情况下,隐藏迭代所有Cargas
EditorFor
是适用的方法。如果您的视图收到类似于
IEnumerable
的内容,您也可以使用
EditorForModel
Hi谢谢!很好用,非常感谢!;)嗨,谢谢!很好用,非常感谢!;)您好,谢谢,但我不喜欢在这种情况下使用jQuery。您好,谢谢,但我不喜欢在这种情况下使用jQuery。