用于选择项目的MVC 5下拉列表

时间:2014-09-18 12:32:59

标签: asp.net-mvc-5 html.dropdownlistfor asp.net-mvc-views

我正在编写一个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()
    {

    }
}

2 个答案:

答案 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是什么,这可能是其他人所说的错误的一部分。