У меня есть таблица издателей, и у меня есть таблица заголовков.Я использую Entity Framework v4.1.У сущности издателя есть свойство title, и оно указывает, сколько изданий опубликовал данный конкретный издатель (я использую базу данных pubs).Я хочу создать список флажков, в котором отображаются все заголовки (все записи таблицы заголовков) и должны быть проверены заголовки, опубликованные этим издателем.Как я могу это сделать?
Пока я могу создать только DropDownlist, используя этот код:
<tr>
<td>
Titles
</td>
<td>
@Html.DropDownListFor(p => p.titles.ToList()[0], new SelectList(ViewBag.titles, "title_id", "notes"))
</td>
</tr>
Как я могу преобразовать это в список флажков?
Заранее спасибо:)
РЕДАКТИРОВАТЬ: После прочтения Brian's
сообщения, я добился определенного прогресса, однако при отправке формы не найдено никаких значений:
Я создалчастичный класс заголовка:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MVCWebApp.Models
{
public partial class title
{
public int Id { get; set; }
public bool IsChecked { get; set; }
}
}
Это мой EditorTemplate для флажка:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MVCWebApp.Models.title>" %>
<%= Html.HiddenFor(x => x.Id)%>
<%= Html.CheckBoxFor(x => x.IsChecked)%>
<%= Html.DisplayFor(x => x.title1)%>
<br />
Со страницы, где мне нужен флажок, я написал этот код:
<td>
@Html.EditorFor(p => ViewData["titles"])
</td>
Это фактический (крайне неэффективный из-за вложенного цикла) метод контроллера, который отображает страницу:
public ActionResult Edit(string id)
{
using (PubsEntities entities = new PubsEntities())
{
publisher pub = entities.publishers.Include("titles").Where(p => p.pub_id == id).First();
List<title> titles = entities.titles.ToList();
foreach (var item in pub.titles)
{
title tit = (from titleItem in titles where item.pub_id == titleItem.pub_id select item).First();
tit.IsChecked = true;
}
ViewData["titles"] = titles;
return View(pub);
}
}
Я получаю основной список заголовков, и эти заголовки, опубликованные определенным издателем, проверяются.Однако при публикации формы все значения равны null
Это мой метод обновления, при котором форма публикуется:
public ActionResult Update(publisher modifiedPub, List<title> selectedTitle )
{
if (!ModelState.IsValid)
return View("Edit", modifiedPub);
using (PubsEntities entities = new PubsEntities())
{
publisher pub = entities.publishers.Where(p => p.pub_id == modifiedPub.pub_id).First();
pub.pub_name = modifiedPub.pub_name;
pub.state = modifiedPub.state;
entities.SaveChanges();
return RedirectToAction("Publishers");
}
}
Здесь selectedTitle имеет значение null идаже в ModifiedPub.titles счетчик равен 0. Кто-нибудь может сказать мне, где это неправильно?
Заранее спасибо:)
PS: Неужели нам действительно нужно сделать так много, чтобы получить чекбокс?