Эхсан Саджад. Я понял, что мы можем написать лямбда-выражение вроде этого
@Html.LabelFor(x=> comment.Data)
позже я решил свою проблему, на самом деле мой подход был совершенно неверным
для решения моей проблемы я добавляю еще один компонент NewComment в свою ViewModel
public class PostViewModel
{
public Post Post { get; set; }
public IEnumerable<Comment> Comments { get; set; }
public Comment NewComment { get; set; } // this is new addition
}
Тогда область Мой новый комментарий похожа на следующую в синтаксисе бритвы
@using (Html.BeginForm("Comment", "Post", Model.Post))
{
var comment = Model.NewComment;
<div class="form-group">
@Html.LabelFor(m => comment.Data);
@Html.TextAreaFor(m => comment.Data, new { @class = "form-control" })
</div>
@Html.HiddenFor(m => comment.Id)
<button type="submit" class="btn btn-primary"> Comment </button>
}
Я делаю проект, где в режиме просмотра сведений
Во-первых, появился пост
Во-вторых, это комментарий
В-третьих, раздел для нового комментария
Полный код страницы с подробностями
@model SimpleBlog.Models.PostViewModel
@{
ViewBag.Title = "Details";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@*Post Section*@
<div class="jumbotron">
<h1> @Model.Post.Title </h1>
<p class="lead"> @Model.Post.PostedBy </p>
<p> @Model.Post.PostDate.ToString("d MMM yyyy") </p>
</div>
<br />
<div class="jumbotron">
<p class="lead"> @Model.Post.Body </p>
</div>
@* Old comments section *@
@foreach (var comment in Model.Comments)
{
<h4> @comment.CommentBy </h4>
<h4> @comment.CommentDate.ToString("d MMM yyyy") </h4>
<h4> @comment.Data </h4>
<br />
<br />
}
@* New Comment section *@
@using (Html.BeginForm("Comment", "Post", Model.Post))
{
var comment = Model.NewComment;
<div class="form-group">
@Html.LabelFor(m => comment.Data);
@Html.TextAreaFor(m => comment.Data, new { @class = "form-control" })
</div>
@Html.HiddenFor(m => comment.Id)
<button type="submit" class="btn btn-primary"> Comment </button>
}