C# 在视图中设置Dropdownlist选定值
我需要使用razor设置DropDownList的setectedValue,但由于它是一个在同一页面中多次使用的列表,因此我无法在控制器中设置所选值,因此如何在视图中设置它 实际控制人名单代码: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
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
方法上有很好的功能。若有表达式从方法的参数返回的集合,那个么该方法将迭代接收到的集合,并为每个元素呈现模板。在您的情况下,隐藏迭代所有CargasEditorFor
是适用的方法。如果您的视图收到类似于IEnumerable
的内容,您也可以使用EditorForModel
您好,谢谢,但我会在“CargaTipo”下面加下划线,可能是因为它位于foreach(Model.Cargas中的var项)中?对于集合,请使用@Html.EditorFor(x=>x.Collection),不要使用foreach迭代器。在EditorTemplates文件夹中创建强类型视图,命名类似于集合项类名。还有一个问题,你可以使用DropDownListFor方法的常规语法。要迭代所有的Cargas吗?有要检查的示例链接吗?有。在您的情况下,隐藏迭代所有CargasEditorFor
是适用的方法。它在EditorFor
方法上有很好的功能。若有表达式从方法的参数返回的集合,那个么该方法将迭代接收到的集合,并为每个元素呈现模板。在您的情况下,隐藏迭代所有CargasEditorFor
是适用的方法。如果您的视图收到类似于IEnumerable
的内容,您也可以使用EditorForModel
Hi谢谢!很好用,非常感谢!;)嗨,谢谢!很好用,非常感谢!;)您好,谢谢,但我不喜欢在这种情况下使用jQuery。您好,谢谢,但我不喜欢在这种情况下使用jQuery。