我建立了一对多的桌面关系,我会在这里建立一个“会话”。包含来自'注释的多个条目条目的表格。表
我正在为我的' SessionId'尝试使用HttpPost方法将注释发布到特定会话时。
模型
public class Sessions
{
[Key]
public int SessionId { get; set; }
[Required]
[Display(Name="Session Name: ")]
public string SessionName { get; set; }
}
public class Notes
{
[Key]
public int NotesId { get; set; }
[Required]
public virtual int SessionId { get; set; }
[ForeignKey("SessionId")]
public virtual Sessions Session { get; set; }
public string Text { get; set; }
}
public class TheDbContext : DbContext
{
public DbSet<Sessions> Sessions { get; set; }
public DbSet<Notes> Notes { get; set; }
}
public class HomeVM
{
public List<Sessions> SessionList { get; set; }
public Sessions NewSession { get; set; }
public Notes SessionId { get; set; }
}
public class NotesVM
{
public List<Notes> NotesList { get; set; }
public Notes NewNote { get; set; }
}
创建Notes视图&#34;索引&#34;
@model NoteTakingv2.Models.NotesVM
@{
ViewBag.Title = "Notes Session";
}
<h2>Notes Session</h2>
@using (Html.BeginForm())
{
@Html.HiddenFor(m => m.NewNote.SessionId)
@Html.EditorFor(m => m.NewNote.Text)
<input type="submit" value="Create" class="btn btn-default" />
}
<table>
<tr>
<th>
<p>Notes</p>
</th>
<th></th>
</tr>
@foreach (var i in Model.NotesList)
{
<tr>
<td>
@i.Text
</td>
</tr>
}
</table>
NotesController
public class NotesController : Controller
{
TheDbContext db = new TheDbContext();
public ActionResult Index(int sessionId)
{
NotesVM model = new NotesVM();
model.NewNote = new Notes { SessionId = sessionId };
model.NotesList = db.Notes.Where(n => n.SessionId == sessionId).ToList();
return View(model);
}
[HttpPost]
public ActionResult Index([Bind(Include = "NotesId,SessionId,Text")]Notes model)
{
if (ModelState.IsValid)
{
db.Notes.Add(model);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(model);
}
}
我不确定自己哪里出错了,但一定是因为我没有正确地获得&#34; SessionId&#34;发帖时。任何帮助将不胜感激!
答案 0 :(得分:0)
弄乱它 - 检查请求,确保它正确发布值。 如果确实正确发布,请尝试更改操作参数。
我个人从不允许模型绑定器创建实体类的实例 - 我总是在输入,输出和实体模型之间进行分离。
尝试为输入参数创建新模型,删除Bind属性并查看会发生什么。
快乐的调试!