我正在编写一个MVC5互联网应用程序,并且在尝试显示从ViewModel填充的模型属性的下拉列表时收到错误。
这是我的Create ActionResult:
List<System.Web.Mvc.SelectListItem> blobs = new List<System.Web.Mvc.SelectListItem>();
foreach (var blobItem in blobContainer.ListBlobs())
{
System.Web.Mvc.SelectListItem selectListItem = new System.Web.Mvc.SelectListItem();
selectListItem.Value = blobItem.Uri.ToString();
selectListItem.Text = blobItem.Uri.ToString();
blobs.Add(selectListItem);
}
AssetViewModel assetViewModel = new AssetViewModel();
assetViewModel.fileNames = blobs;
这是我的创建视图代码:
<div class="form-group">
@Html.LabelFor(model => model.asset.webAddress, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.asset.webAddress, new SelectList(Model.fileNames, "Value", "Text"), " -----Select List----- ")
@Html.ValidationMessageFor(model => model.asset.webAddress)
</div>
</div>
这是我得到的错误:
Object reference not set to an instance of an object.
在线:
@Html.DropDownListFor(m => m.asset.webAddress, new SelectList(Model.fileNames, "Value", "Text"), " -----Select List----- ")
我可以请一点帮忙吗?
提前致谢
修改
public class AssetViewModel
{
public Asset asset { get; set; }
public List<SelectListItem> fileNames { get; set; }
public AssetViewModel(Asset asset)
{
this.asset = asset;
}
public AssetViewModel()
{
}
}
答案 0 :(得分:1)
您的模型资产属性m.asset
为空。
看起来你想要实现这样的东西
<div class="form-group">
@Html.LabelFor(model => model.webAddress, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.webAddress, new SelectList(Model.fileNames, "Value", "Text"), " -----Select List----- ")
@Html.ValidationMessageFor(model => model.webAddress)
</div>
</div>
答案 1 :(得分:0)
您的DDLFor
语法与我使用的语法不同。
@Html.DropDownListFor(x => x.LeagueId, Model.TeamSL, new { id = "ddlTeam" })
我不确定m.asset.WebAddress
是什么,这可能是其他人所说的错误的一部分。