将项添加到虚拟集合ASP.NET MVC

时间:2014-05-09 20:33:34

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我正在尝试将项目发布到属于另一个模型的集合中。 这是视图中的表单:

@using (Html.BeginForm("Create", "Comment", FormMethod.Post, new { enctype = "multipart/form-data", encoding = "multipart/form-data" }))
            {
                @Html.AntiForgeryToken()
                <div class="modal-body">
                    <div class="form-horizontal">
                        <input type="hidden" value="@Model.DeviceID" />
                        <div class="form-group">
                            <h5>Your name</h5>
                            <div class="col-md-10">
                                <input name="Author" />
                            </div>
                        </div>
                        <div class="form-group">
                            <h5>Comment</h5>
                            <div class="col-md-10">
                                <textarea name="Comment"></textarea>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="modal-footer">

                    <input type="submit" class="btn btn-primary" value="Submit" /> <!--Next</input>-->
                </div>
            }

并且控制器代码设置如下

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(string returnUrl, int devID, string Author, string text)
    {
        string url = this.Request.UrlReferrer.AbsolutePath;

        Comment comment = new Comment();

        if (ModelState.IsValid)
        {
            //db.Comments.Add(comment);
            db.SaveChanges();
            return Redirect(url);
        }
        return Redirect(url);
    }

但是这不起作用,因为我无法设置要发布的项目的模型ID。

Asp.net MVC添加到模型拥有的虚拟集合的方式是什么?

1 个答案:

答案 0 :(得分:1)

我注意到你的控制器名称不匹配。所以你不能很好地检索它。 首先改变这一行:

 <input name="Author" /> and <textarea name="Comment"></textarea> 

人:

 <input name="author" /> and <textarea name="comments"></textarea>

您可以更改参数以匹配视图中的名称。

 public ActionResult Create(string returnUrl, int DeviceID, string author, string comments)
 {
    string url = this.Request.UrlReferrer.AbsolutePath;

    Comment myComment = new Comment();
    comment.DeviceID = DeviceID;
    comment.Author = author;
    comment.Comments= comments;// I presume your Comment class has thoses properties if not you can see at least the way you can deal with that 
    if (ModelState.IsValid)
    {
        db.Comments.Add(myComment);
        db.SaveChanges();
        return Redirect(url);
    }
    return Redirect(url);
}

我希望它会有所帮助。如果您可以显示Comment模型的代码,那么我可以根据需要进行编辑。