Нет значения для раскрывающегося списка при отправке моей формы - PullRequest
0 голосов
/ 12 января 2012

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

Вот мой контроллер действий (перед отображением моего вида):

    public ActionResult Create()
    {
        IEnumerable<User> authors = m_AccountBusiness.GetAllUsers();

        PageCreateViewModel viewModel = new PageCreateViewModel
        {
            PageToCreate = new PageFullViewModel(),
            Authors = authors.Select(x => new SelectListItem { Text = x.UserName, Value = x.UserID.ToString() })
        };

        return View(viewModel);
    }

Вот (часть) мой взгляд:

@model MyBlog.ViewModels.PageCreateViewModel

<h3>Create</h3>

@using (Html.BeginForm())
{

@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.PageToCreate.PageID)

<div class="editor-label">
    @Html.LabelFor(model => model.PageToCreate.Title)
</div>
<div class="editor-field">
    @Html.TextBoxFor(model => model.PageToCreate.Title, new { @class = "titleValue" })
    @Html.ValidationMessageFor(model => model.PageToCreate.Title)
</div>

<div class="editor-label">  
    @Html.LabelFor(model => model.PageToCreate.Author)
</div>
<div class="editor-field">      
    @Html.DropDownListFor(model => model.PageToCreate.Author, Model.Authors, "Please select...")    
</div>

Вот мой PageCreateViewModel:

public class PageCreateViewModel
{
    public PageFullViewModel PageToCreate { get; set; }
    public IEnumerable<SelectListItem> Authors { get; set; }
}

Есть идеи?

Спасибо.

Ответы [ 2 ]

1 голос
/ 12 января 2012

Спасибо, ребята. Наконец-то я обнаружил свою ошибку: это не Author, право на привязку к нему, это должен быть AuthorID !!

<div class="editor-field">           
@Html.DropDownListFor(model => model.PageToCreate.AuthorID, Model.Authors, "Please select...")         
</div> 

В любом случае, спасибо.

0 голосов
/ 12 января 2012

Вы должны добавить дополнительное строковое свойство к вашей PageCreateViewModel.В этом свойстве мы будем хранить выбранное значение.Допустим, его зовут «Автор».Редактировать: я заметил, что у вас есть свойство для этой модели в вашей модели, но попробуйте вот так:

На вашем экране заполнение выпадающего списка должно выглядеть так.

 @Html.DropDownList("Author", Model.Authors)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...