Выпадающий список MVC 5 для выбора элемента

Я кодирую интернет-приложение 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()
    {

    }
}

person user3736648    schedule 18.09.2014    source источник
comment
Я подозреваю, что свойство asset модели равно null (вы, похоже, не инициализируете его в приведенном выше коде)   -  person    schedule 18.09.2014
comment
Не могли бы вы поделиться Декларацией МОДЕЛИ о вашем ВИДЕ?   -  person AK47    schedule 18.09.2014


Ответы (2)


Свойство актива вашей модели m.asset равно null. Похоже, вы хотите реализовать что-то вроде этого

<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>
person Agaspher    schedule 18.09.2014
comment
Спасибо. Простая ошибка, я неправильно передал ViewModel в представление. - person user3736648; 19.09.2014

Ваш синтаксис DDLFor выглядит иначе, чем я использовал.

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

Я не уверен, что такое m.asset.WebAddress, это может быть частью ошибки, как заявляли другие.

person CSharper    schedule 18.09.2014