所以基本上我有View,我传递了我的模型的整个枚举,它显示它们并为它们中的每一个生成表单。问题是,在提交单个表单后,它不会修改我的模型(它应该将字符串添加到字符串列表中)。刷新之后,一切都会回归原样。我是初学者,所以这可能是一个非常愚蠢的问题,但我无法找到答案,因为我的情况与我在互联网上找到的有些不同。
这是我的代码
型号:
public class Post
{
[Key]
public int PostID { get; set; }
[DataType(DataType.ImageUrl)]
public string PhotoPath {get; set; }
[DisplayName("Description")]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
[DisplayName("Title")]
[Required(ErrorMessage="Title is required")]
public string Title { get; set; }
[Display(Name = "Comments")]
public List<string> Comments = new List<string>();
}
控制器:
[HttpPost]
public ActionResult Index(int? id)
{
string comment = Request.Form["comment-text"];
Post post = db.Images.Find(id);
if (!String.IsNullOrEmpty(comment) && post != null)
{
post.Comments.Add(comment);
db.Entry(post).State = EntityState.Modified;
db.SaveChanges();
}
return View(db.Images.ToList());
}
这就是我的看法,我觉得这样做很糟糕因为我不能用枚举发布单个模型而是它让我回到控制器的整个枚举
<div class="posts-section">
@foreach (var item in Model)
{
<div class="single-post col-lg-4">
<h3>@Html.DisplayFor(modelItem => item.Title)</h3>
<img src="@item.PhotoPath" style="width:128px;height:128px" />
<p>@Html.DisplayFor(modelItem => item.Description)</p>
<div class="comments">
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<input id="id" name="id" type="hidden" value="@item.PostID">
@Html.LabelFor(modelItem => item.Comments, new { @class = "col-sm-4 control-label" })
<div class="col-sm-4">
<input type="text" class="form-control" id="@item.PostID" name="comment-text" placeholder="Write you comment here">
<button type="submit" class="btn btn-default">Submit</button>
</div>
}
@foreach (string comment in item.Comments)
{
<div class="single-comment">
<p>@comment</p>
</div>
}
</div>
</div>
}
</div>
我想要做的就是从输入(注释文本)中获取值并将该值添加到特定模型的列表中。我的问题是db.find得到了模型,但它并没有改变它的价值因为刷新一切后消失了