Как представить коллекцию элементов из модели MVC представлению MVC (* .cshtml) в ASP.NET MVC - PullRequest
0 голосов
/ 26 июля 2011

У меня есть объект MVC модели, который содержит коллекцию объектов.Я хочу представить модель MVC как поля ввода пользователя в представлении MVC.

Ниже приведены модель MVC и модель домена

 public class BookModel
    {
        public BookModel(Book book)
        {
            this.Authors = book.Authors;
        }   

        public List<Author> Authors { get; set; }
    }

    public  class Book
    {
        public List<Author> Authors = new List<Author>();
    }

    public class Author
    {
        public string Name { get; set; }
    }

Ниже приведен метод действия в контроллере:

public ActionResult Edit(int id)
        {

            BookModel model = GetBookModel(id);
            return View(model);
        }

Проблема заключается в том, что сгенерированное представление (*.cshtml) НЕ имеет полей ввода для авторов коллекции.

Любая идея будет принята с благодарностью.

1 Ответ

1 голос
/ 27 июля 2011

Проблема в том, что сгенерированное представление (* .cshtml) НЕ имеет полей ввода для авторов коллекции.

Мастер новых представлений ASP.NET MVC работает наилучшим образом,Оттуда до вас.

Таким образом, внутри Edit.cshtml вы можете использовать шаблоны редактора:

@model BookModel

@using (Html.BeginForm())
{
    <table>
        <thead>
            <tr>
                <th>Name</th>
                <th>Text</th>
            </tr>
        </thead>
        <tbody>
            @Html.EditorFor(x => x.Authors)
        </tbody>
    </table>

    <input type="submit" value="Edit" />
}

и затем определить шаблон редактора для автора (~/Views/Shared/EditorTemplates/Author.cshtml), который будет автоматически отображаться для каждого элемента вашегоколлекция:

@model Author
<tr>
    <td>@Html.EditorFor(x => x.Name)</td>
    <td>@Html.EditorFor(x => x.Text)</td>
</tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...