Возможно, вы захотите разделить это на пару классов: один класс вашей книги, один для настройки представления и один для получения значений представления. Это может показаться слишком преувеличенным, но, если ничего другого, это не так, чтобы вы не били квадратный колышек в круглое отверстие. В конце концов, если вы просто перейдете к классу Book, который у вас есть прямо сейчас, вы должны выяснить, как сделать так, чтобы представление отображало все, что вам нужно (скажем, несколько флажков для категорий ... Список, который ваша книга не делает. полностью), а затем отправьте его обратно контроллеру, который должен соответствовать дизайну класса Book. Мне кажется, что в долгосрочной перспективе это намного сложнее и, возможно, невозможно без ущерба для оригинального дизайна книжного класса.
Я бы предложил что-то вроде этого:
class ViewBookModel
{
public ViewBookModel(Book book, IList<Categories> categoryList)
{
BookId = book.Id;
BookName = book.BookName;
CategoryList = categoryList;
}
public Int32 BookId { get; private set; }
public String BookName { get; private set; }
IList<Categories> CategoryList { get; set; }
}
А для отправки обратно в контроллер:
class ViewBookInModel
{
public String BookId { get; set; }
public String BookName { get; set }
public Int32[] CategoryIds { get; set; }
}
И разметка будет выглядеть примерно так:
<%
foreach(var category in Model.CategoryList)
{
%>
<input type="checkbox" name="CategoryIds" value="<%= category.Id %>" />
<%
}
%>
И метод контроллера в:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateBook(ViewBookInModel book)