ben bir varlık aşağıdaki özellikleri içerir Domain.Models.BlogPost
denilen vardır: ASP.NET MVC 3 Modeli bağlayıcı ve form alanları
- POSTID
Ayrıcaadında bir varlığım var aşağıdaki özellikleri içerir:
- CommentID
- POSTID
- Yazar
- Eposta
- Vücut
BlogPost
birçok PostComments
içeriyor
Şimdi bu (html açıklama ile blog yazısı kodundan ayrılan yorum formu) böyle bir manzara:
yorum formu@Html.TextBox("Author")
ve @Html.TextBox("Body")
kullanması nedeniyle, bunlar verilerle doldurulur ki @model Domain.Models.BlogPost
@using Domain.Models;
@{
ViewBag.Title = "Post";
}
<div class="postTitle">@Model.Title</div>
<div class="subInfo">
Posted by @Model.Author on @Model.PostedDate.ToString("D")
</div>
<div class="postBody">
@Html.Markdown(Model.Body)
</div>
<br />
@Model.PostComments.Count Comment(s).
<div class="comments">
@foreach (PostComment postComment in Model.PostComments)
{
Html.RenderPartial("PostComment", postComment);
}
</div>
<!-- BELOW IS THE ADD COMMENT FORM -->
<div id="addComment">
@using (Html.BeginForm("AddComment", "Blog"))
{
<text>
@Html.Hidden("PostID", Model.PostID)<br />
Name: @Html.TextBox("Author")<br />
Email: @Html.TextBox("Email")<br />
Website: @Html.TextBox("Website")<br />
Body: @Html.TextArea("Body")<br />
<input type="submit" value = "Add Comment" />
</text>
}
</div>
@Html.ActionLink("Add Comment", "AddComment")
Author
ve Body
özelliklerini de içeren model. Bunu nasıl düzelteceğinize dair herhangi bir öneri, bu sayfalar yüklendiğinde, bu alanların değerlerini almaması için mi?
Ben de bir BlogPostViewModel
oluşturma ve ayarlama çalıştı görüşündedir modeli ve benim gerçek modeli ile BlogPost
özelliği atamak gibi:
public class BlogPostViewModel
{
public BlogPost BlogPost { get; set; }
public PostComment NewComment { get; set; }
}
Sonra @Html.TextBoxFor(x => x.NewComment.Author)
yaptım ama formu bu eylem yöntemine yayınlanmıştır: public ActionResult AddComment(PostComment postComment)
{
// ...
}
postComment
formu değerlerine bağlamak vermedi:/
Bu, varsayılan model ciltleyicisinin çirkin bir gerçektir. Bunu birkaç kez vurdum. En iyi çözümüm, [Bind (Exclude = "Author, Body")] eylemini eklemek ve ardından snafu'yu manuel olarak düzeltmek oldu. Daha iyi bir yaklaşım duymayı çok isterim. –
Daha iyi bir yaklaşımı duymak isterim. – Chev
Güncellemenizi gözden geçirin, NewComment önekini temel alarak bağlamayı deneyin. Yani PostComment postComment –