मैं एक इकाई Domain.Models.BlogPost
जो निम्नलिखित गुण होता है कहा जाता है:ASP.NET MVC 3 मॉडल बाध्यकारी और प्रपत्र फ़ील्ड्स
- postid
- शीर्षक
- लेखक
- PostedDate
- शरीर
मेरे पासनामक एक इकाई भी हैजो निम्नलिखित गुण शामिल हैं:
- CommentID
- postid
- लेखक
- ईमेल
- वेबसाइट
- शरीर
BlogPost
शामिल कई PostComments
। कई रिश्तों में से एक।
अब मैं इस (एचटीएमएल टिप्पणी के माध्यम से ब्लॉग पोस्ट कोड से अलग टिप्पणी फार्म) की तरह एक दृश्य है:
@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")
समस्या है कि क्योंकि टिप्पणी प्रपत्र @Html.TextBox("Author")
और @Html.TextBox("Body")
का उपयोग करता है, वे डेटा के साथ से भर जाते हैं मॉडल, जिसमें गुण Author
और Body
भी शामिल हैं। इस फिक्स को कैसे ठीक किया जाए इस पर कोई सुझाव है कि पेज फ़ील्ड लोड होने पर इन फ़ील्ड में मूल्य नहीं लगाए जाते हैं?
मैं भी एक BlogPostViewModel
बनाने और स्थापित करने की कोशिश की है कि देखने के मॉडल और अपने वास्तविक मॉडल के साथ BlogPost
संपत्ति बताए के रूप में:
public class BlogPostViewModel
{
public BlogPost BlogPost { get; set; }
public PostComment NewComment { get; set; }
}
तब मैं @Html.TextBoxFor(x => x.NewComment.Author)
किया, लेकिन जब प्रपत्र इस कार्रवाई विधि पर पोस्ट किया:
public ActionResult AddComment(PostComment postComment)
{
// ...
}
postComment
प्रपत्र मूल्यों के लिए बाध्य नहीं किया:/
यह डिफ़ॉल्ट मॉडल बांधने की मशीन का एक बदसूरत तथ्य है। मैंने इसे कुछ बार मारा है। मेरा सबसे अच्छा समाधान जोड़ने के लिए [बाइंड (बहिष्कृत = "लेखक, बॉडी")] जोड़ना है और फिर स्नैफ़ू को मैन्युअल रूप से ठीक करना है। मुझे एक बेहतर दृष्टिकोण सुनना अच्छा लगेगा। –
मुझे एक बेहतर दृष्टिकोण भी सुनना अच्छा लगेगा। – Chev
अपने अपडेट को देखा, न्यूकॉममेंट उपसर्ग के आधार पर बाध्यकारी आज़माएं। यानी [बाइंड (उपसर्ग = "न्यूकॉममेंट")] पैरामीटर पोस्टकॉममेंट पोस्ट कॉमेंट –