0

我正在编写一个 MVC5 互联网应用程序,并且在尝试显示从 ViewModel 填充的模型属性的下拉列表时出现错误。

这是我的创建 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()
    {

    }
}
4

2 回答 2

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>
于 2014-09-18T12:38:55.670 回答
0

您的DDLFor语法看起来与我使用的不同。

@Html.DropDownListFor(x => x.LeagueId, Model.TeamSL, new { id = "ddlTeam" })

我不确定是什么m.asset.WebAddress,这可能是其他人所说的错误的一部分。

于 2014-09-18T13:52:27.293 回答