我正在尝试将项目发布到属于另一个模型的集合中。 这是视图中的表单:
@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添加到模型拥有的虚拟集合的方式是什么?
答案 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
模型的代码,那么我可以根据需要进行编辑。