【发布时间】:2014-01-22 12:53:18
【问题描述】:
我正在尝试制作非常简单的论坛,但 DropDownList 有问题。我有两个模型:
论坛线程.cs
public partial class ForumThread
{
public ForumThread()
{
this.ForumCategory = new HashSet<ForumCategory>();
}
public int TH_ID { get; set; }
public System.DateTime DATE { get; set; }
public string TOPIC { get; set; }
public string USER { get; set; }
public virtual ICollection<ForumCategory> ForumCategory { get; set; }
}
ForumCategory.cs
public partial class ForumCategory
{
public ForumCategory()
{
this.ForumThread = new HashSet<ForumThread>();
}
public int CA_ID { get; set; }
public string CATEGORY { get; set; }
public bool isSelected { get; set; }
public virtual ICollection<ForumThread> ForumThread { get; set; }
}
我尝试使用视图制作“创建”功能:
创建
@model AnimeWeb.Models.ForumThread
@{
ViewBag.Title = "Create";
}
<h2>New Thread</h2>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<div class="editor-field">
@Html.HiddenFor(model => model.TH_ID)
</div>
<div class="editor-label">
TOPIC
</div>
<div class="editor-field">
@Html.EditorFor(model => model.TOPIC)
@Html.ValidationMessageFor(model => model.TOPIC)
</div>
<div class="editor-label">
CATEGORY
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ForumCategory)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
以及 ForumCategory 的 PartialView:
论坛类别
@model AnimeWeb.Models.FORUMCATEGORY
@Html.HiddenFor(model => model.CA_ID)
@Html.HiddenFor(model => model.CATEGORY)
<div>
@Html.DropDownListFor(item => Model.CA_ID, ViewBag.CA_ID as SelectList, "-- Select --")
</div>
论坛控制器
public ActionResult Create()
{
var db = new MainDatabaseEntities();
var viewModel = new ForumThread
{
ForumCategory = db.ForumCategory.Select(c => new { CA_ID = c.CA_ID, CATEGORY = c.CATEGORY, isSelected = false }).ToList().Select(g => new ForumCategory
{
CA_ID = g.CA_ID,
CATEGORY = g.CATEGORY,
isSelected = false
}).ToList(),
};
return View(viewModel);
}
//
// POST: /Forum/Create
[HttpPost]
public ActionResult Create(ForumThread forumthread, String user, int id)
{
var db = new MainDatabaseEntities();
var newthread = new ForumThread
{
TH_ID = forumthread.TH_ID,
DATE = DateTime.Now,
TOPIC = forumthread.TOPIC,
USER = forumthread.USER,
ForumCategory = new List<ForumCategory>()
};
foreach (var selectedCategory in forumthread.FORUMCATEGORY.Where(c => c.isSelected))
{
var category = new ForumCategory { CA_ID = selectedCategory.CA_ID };
db.ForumCategory.Attach(category);
newthread.ForumCategory.Add(category);
}
db.ForumThread.Add(newthread);
db.SaveChanges();
return RedirectToAction("Index");
}
这显然行不通。我试图在这个论坛上使用其他线程,但没有任何帮助。有人可以解释一下如何完成这项工作吗?
错误出现在 ForumCategory 的部分视图中:
The ViewData item that has the key 'CA_ID' is of type 'System.Int32' but must be of type 'IEnumerable<SelectListItem>'.
【问题讨论】:
-
您能否详细说明“显然行不通”? 发生了什么,你有没有遇到任何错误?相关的控制器代码也将很有用。
-
使用控制器和错误编辑。错误有点明显,但我仍然不知道如何解决这个问题。也许还有其他解决方案?
标签: c# .net asp.net-mvc-4 viewdata asp.net-mvc-partialview