获取外键Id以发布相关数据

时间:2014-11-02 23:41:06

标签: asp.net

我建立了一对多的桌面关系,我会在这里建立一个“会话”。包含来自'注释的多个条目条目的表格。表

我正在为我的' 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;发帖时。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

弄乱它 - 检查请求,确保它正确发布值。 如果确实正确发布,请尝试更改操作参数。

我个人从不允许模型绑定器创建实体类的实例 - 我总是在输入,输出和实体模型之间进行分离。

尝试为输入参数创建新模型,删除Bind属性并查看会发生什么。

快乐的调试!