【问题标题】:MVC 5 dropdown list for selecting an item用于选择项目的 MVC 5 下拉列表
【发布时间】:2014-09-18 12:32:59
【问题描述】:

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

    }
}

【问题讨论】:

  • 我怀疑模型的 asset 属性为空(您似乎没有在上面的代码中对其进行初始化)
  • 您能分享一下您的 VIEW 的 MODEL 声明吗?

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


【解决方案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>

【讨论】:

  • 谢谢。一个简单的错误,我没有将 ViewModel 正确传递给 View。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-08-26
    • 1970-01-01
    • 2021-12-21
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多