Asp.net mvc 3 在asp.NETMVC中更新关系数据库

Asp.net mvc 3 在asp.NETMVC中更新关系数据库,asp.net-mvc-3,relational-database,Asp.net Mvc 3,Relational Database,我正在开发一个简单的博客应用程序来自学C#和asp.NETMVC3。 我正处于一个需要更新帖子评论的阶段 我的代码中的注释类如下所示: public class Comment { public int CommentID { get; set; } public string Name { get; set; } [DataType(DataType.EmailAddress)] public string Email

我正在开发一个简单的博客应用程序来自学C#和asp.NETMVC3。 我正处于一个需要更新帖子评论的阶段

我的代码中的注释类如下所示:

 public class Comment
    {
        public int CommentID { get; set; }
        public string Name { get; set; }

        [DataType(DataType.EmailAddress)]
        public string Email { get; set; }

        [DataType(DataType.MultilineText)]
        public string CommentBody { get; set; }

        public int BlogID { get; set; } 
        public virtual Blog Blog { get; set; }
    }
我在博客详细信息页面上有一个评论表单,上面有姓名、电子邮件和评论。代码如下:

    <div class="editor-label">
        @Html.LabelFor(model => model.Comment.Name)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Comment.Name)
        @Html.ValidationMessageFor(model => model.Comment.Name)
    </div>  
    <div class="editor-label">
        @Html.LabelFor(model => model.Comment.Email)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Comment.Email)
        @Html.ValidationMessageFor(model => model.Comment.Email)
    </div>            

    <div class="editor-label">
        @Html.LabelFor(model => model.Comment.CommentBody)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Comment.CommentBody)
        @Html.ValidationMessageFor(model => model.Comment.CommentBody)
    </div>
    <p>
        <input type="submit" value="Add Comment" />
    </p>

@LabelFor(model=>model.Comment.Name)
@EditorFor(model=>model.Comment.Name)
@Html.ValidationMessageFor(model=>model.Comment.Name)
@LabelFor(model=>model.Comment.Email)
@EditorFor(model=>model.Comment.Email)
@Html.ValidationMessageFor(model=>model.Comment.Email)
@LabelFor(model=>model.Comment.CommentBody)
@EditorFor(model=>model.Comment.CommentBody)
@Html.ValidationMessageFor(model=>model.Comment.CommentBody)

我不知道如何通过这个传递blogid,以便用正确的blogid更新评论


谢谢。

您可以在表单中使用隐藏字段:

@Html.HiddenFor(model => model.Comment.BlogID)
@Html.HiddenFor(x => x.Comment.BlogID)

您可以在表单中使用隐藏字段:

@Html.HiddenFor(x => x.Comment.BlogID)


这将如何为新注释获取正确的BlogID?引入hiddenform会导致此错误:INSERT语句与外键约束“FK_Comments\u Blogs\u BlogID”冲突。冲突发生在数据库“NPLHBlogDb”、表“dbo.Blogs”、列“BlogID”中。语句已终止。可能您的模型中的注释属性以外的内容;评论属于博客,因此您可以在模型中添加该博客引用。一旦使用Html.Hidden,请指定字段的名称并使用Blog.BlogID的值,而不是使用Html.HiddenFor。这将如何为新注释获取正确的BlogID?引入hiddenform会出现以下错误:INSERT语句与外键约束“FK_Comments_Blogs_BlogID”冲突。冲突发生在数据库“NPLHBlogDb”、表“dbo.Blogs”、列“BlogID”中。语句已终止。可能您的模型中的注释属性以外的内容;评论属于博客,因此您可以在模型中添加该博客引用。一旦使用Html.Hidden,请指定字段的名称并使用Blog.BlogID的值,而不是使用Html.HiddenFor。引入hiddenform会出现以下错误:INSERT语句与外键约束“FK_Comments_Blogs_BlogID”冲突。冲突发生在数据库“NPLHBlogDb”、表“dbo.Blogs”、列“BlogID”中。该语句已终止。我猜这是因为您的Blog属性为null。在插入注释之前,您必须使用BlogID属性从数据库获取实际的日志。我尝试在@Html.HiddenFor(x=>x.comment.BlogID,Model.Blog.BlogID)执行此操作。这不管用。我可以看到一个空值正在被传递给注释控制器。但是,我不知道如何传递正确的值。您必须从数据库中获取它。如果你想填充整个Blog属性,你必须为它的每个属性使用隐藏字段:
@Html.HiddenFor(x=>x.Comment.Blog.Prop1)
,诸如此类……很抱歉让人讨厌,但我不明白,我想将comment.BlogID设置为与正在发表评论的博客文章的id相等。引入hiddenform会导致以下错误:INSERT语句与外键约束“FK_Comments_Blogs_BlogID”冲突。冲突发生在数据库“NPLHBlogDb”、表“dbo.Blogs”、列“BlogID”中。该语句已终止。我猜这是因为您的Blog属性为null。在插入注释之前,您必须使用BlogID属性从数据库获取实际的日志。我尝试在@Html.HiddenFor(x=>x.comment.BlogID,Model.Blog.BlogID)执行此操作。这不管用。我可以看到一个空值正在被传递给注释控制器。但是,我不知道如何传递正确的值。您必须从数据库中获取它。如果你想填充整个Blog属性,你必须为它的每个属性使用隐藏字段:
@Html.HiddenFor(x=>x.Comment.Blog.Prop1)
,诸如此类……很抱歉让人讨厌,但我不明白,我想将comment.BlogID设置为与正在发表评论的博客文章的id相等。您的操作是什么?你能添加行动代码吗?你在行动中做什么?你能添加动作代码吗?