MVC3 не отображает мой SelectList при использовании @ Html.EditorFor - PullRequest
0 голосов
/ 30 января 2012

Я пытаюсь визуализировать ViewModel, используя Razor и MVC3. По некоторым причинам мой SelectList (WidgetTypes ниже) не рендерится, хотя все остальные рендерится просто отлично. Кто-нибудь может пролить свет на то, почему бы и нет? Я не хочу менять представление, чтобы использовать @ Html.EditorFor (m => m.SystemName) и т. Д. Для каждого поля, потому что я использую динамические модели для виджетов, что вызовет ту же проблему.

Моя ViewModel:

public class CreateWidgetViewModel 
{
    [Required]
    public string Title { get; set; }

    [Required(ErrorMessage = "The System Name is required")]
    [Display(Name = "System Name")]
    public string SystemName { get; set; }

    [Required]
    [Display(Name = "Widget Type")]
    public string WidgetType { get; set; }

    [Required]
    [Display(Name = "Widget Types")]
    public SelectList WidgetTypes { get; set; }
}

Мой контроллер:

[HttpGet]
public ActionResult Create()
{
    var widgetTypes = from wt in _widgetService.WidgetTypes
                      select new
                      {
                          Name = wt.WidgetName,
                          WidgetType = wt.GetType().AssemblyQualifiedName
                      };

    var viewModel = new CreateWidgetViewModel
    {
        WidgetTypes = new SelectList(widgetTypes, "WidgetType", "Name")
    };

    if (Request.IsAjaxRequest())
    {
        return PartialView(viewModel);
    }
    return View(viewModel);
}

My View:

@{
    ViewBag.CurrentPage = "widgets";
}
<h2>@ViewBag.Title</h2>
@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>
        <div>
            @Html.EditorFor(model => model)
        </div>
    </fieldset>
    <div>
        <input type="submit" value="Save" />&nbsp;or&nbsp;@Ajax.ActionLink("Back to list", "Index", "Widget", 
        new AjaxOptions { HttpMethod = "Get", UpdateTargetId = "ajax-replace" })
    </div>
}

1 Ответ

2 голосов
/ 30 января 2012

Вам нужно использовать помощник Html.DropdownListFor, если вы хотите создать выпадающий список.Тот факт, что вы использовали SelectList в качестве типа для некоторых ваших свойств, не означает, что шаблон редактора по умолчанию будет отображать поле <select>.Так что вам придется написать собственный шаблон редактора.

Вы можете взглянуть на следующий пост в блоге , чтобы увидеть, как реализованы эти шаблоны по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...