Asp.net mvc 列表<;选择列表项>;()用于html帮助程序DropDownListFor())

Asp.net mvc 列表<;选择列表项>;()用于html帮助程序DropDownListFor()),asp.net-mvc,html-helper,selectlistitem,Asp.net Mvc,Html Helper,Selectlistitem,我正在尝试生成一个列表,如下所示- @using SkyTracker.Models @model SkyTracker.Models.Outlet @{ var outletTypeList = new List<SelectListItem>(); foreach (var item in ViewBag.OutletTypes) { //Exception Cannot implicitly convert type 'int' to '

我正在尝试生成一个列表,如下所示-

@using SkyTracker.Models
@model SkyTracker.Models.Outlet
@{
    var outletTypeList = new List<SelectListItem>();
    foreach (var item in ViewBag.OutletTypes)
    {
        //Exception Cannot implicitly convert type 'int' to 'string'
        var newType = new SelectListItem { Text = item.OutletTypeName, Value = item.OutletTypeId };
        outletTypeList.Add(newType);
    }
}



<form method="post" action="@(ViewBag.BaseUrl)OutletManagement/Create?id=@ViewBag.RaId">
    @Html.LabelFor(m => m.OutletTypeId, new { @class="required"})
    @Html.DropDownListFor(m => m.OutletTypeId, outletTypeList, new {required="required" })

</form>
@使用SkyTracker.Models
@型号SkyTracker.Models.Outlet
@{
var outletTypeList=新列表();
foreach(ViewBag.OutletTypes中的变量项)
{
//异常无法将类型“int”隐式转换为“string”
var newType=new SelectListItem{Text=item.OutletTypeName,Value=item.OutletTypeId};
outletTypeList.Add(新类型);
}
}
@LabelFor(m=>m.OutletTypeId,新的{@class=“required”})
@DropDownListFor(m=>m.OutletTypeId,outletTypeList,new{required=“required”})

但是我在foreach循环中得到了一个异常。有什么帮助吗?

如果
OutletTypeId
是type of
int
,则使用
Value=item.OutletTypeId.ToString()

但是,该代码属于控制器,而不是视图,理想情况下,您应该使用包含属性
IEnumerable OutletTypeList

public class OutletVM
{
    [Required(ErrorMessage = "Please select an outlet type")]
    public int? OutletTypeId { get; set; } // nullable to protect against under-posting attacks
    public IEnumerable<SelectListItem> OutletTypeList { get; set; }
    ....
}
在我看来

@Html.DropDownListFor(m => m.OutletTypeId, Model.OutletTypeList, "Please select")
@Html.ValidationMessageFor(m => m.OutletTypeId)
还请注意,您应该删除仅为HTML5客户端验证的
new{required=“required”}
,并在绑定到的属性中添加
RequiredAttribute
,以便获得客户端和服务器端验证

还可以考虑使用

 @using (Html.BeginForm("Create", "OutletManagement", new { id = @ViewBag.RaId }))
生成表单元素的步骤

 @using (Html.BeginForm("Create", "OutletManagement", new { id = @ViewBag.RaId }))