我在Modal Bootstrap(5)中有几个DDL,而那些DDL与Controller中的Viewbag绑定,如下所示:
(适用控制器)
ViewBag.StateID = new SelectList(db.State, "StateID", "StateDesc", events.StateID);
ViewBag.CountryID = new SelectList(db.Country, "CountryID", "CountryDesc",events.CountryID);
ViewBag.HotelID = new SelectList(db.Hotel, "HotelID", "HotelDesc", events.HotelID);
ViewBag.AirportID = new SelectList(db.Airport, "AirportID", "AirportDesc", events.AirportID);
ViewBag.AirlineID = new SelectList(db.Airline, "AirlineID ", "AirlineDesc", events.AirlineID);
如果我的代码声明是这样的话,我的视图工作完全正常并填充DDL并显示所选项目:
(查看)
@Html.DropDownList("AirlineID", String.Empty)
(适用的Javascript)
<script type="text/javascript">
$('#AirlineID').attr('class', 'chosen-select form-control required');
$('#AirportID').attr('class', 'chosen-select form-control required');
$('#StateID').attr('class', 'chosen-select form-control required');
$('#CountryID').attr('class', 'chosen-select form-control required');
$('#HotelID').attr('class', 'chosen-select form-control required');
</script>
但是,如果我的代码是以这种方式声明的,则不会显示Selected项目或Show:
@Html.DropDownList("AirportID", (IEnumerable<SelectListItem>)ViewBag.AirportID, String.Empty, new { @class = "chosen-select form-control required" })
我使用selected-select class
为什么?缺少声明或代码?错误的代码?
谢谢你
答案 0 :(得分:1)
您不能对绑定的属性和SelectList
@Html.DropDownList("CountryID", (IEnumerable<SelectListItem>)ViewBag.CountryID, ...)
表示您绑定到名为CountryID
的属性,但在您的情况下,CountryID
是SelectList
而不是值类型(并且<select>
元素只能绑定到值类型。
该方法在内部生成<option>
个元素的集合,并设置value
属性和文本。当它这样做时,它会检查绑定到的属性的值。如果属性的值与选项的值匹配,则呈现selected="selected"
属性。在您的情况下,CountryID
不是一个int
值,它与您在选项中生成的StateID
值之一相匹配,因此selected="selected"
永远不会在任何选项上设置,因为{的值{ {1}}是CountryID
(不是"System.Web.Mvc.SelectList"
或"1"
等)
绑定到属性时,将忽略设置"2"
构造函数的最后一个参数。
您可以通过将SelectList
指定为第二个参数来完成此工作,这意味着帮助程序会回退到使用null
作为第一个参数。
SelectList
但推荐的方法是使用视图模型,例如
@Html.DropDownList("CountryID", null, String.Empty, new { @class = "chosen-select form-control required" })
并在GET方法中初始化实例或视图模型,将数据模型属性映射到它并分配public class MyViewModel
{
[Display(Name = "Country")]
[Required(ErrorMessage = "Please select a country")]
public int CountryID { get; set; }
public SelectList CountryList { get; set; }
}
属性。然后在视图中,使用强类型的html帮助器绑定到模型属性。
SelectList