Ich baue ein Blog mit ASP.NET MVC 2 zum Spaß, um zu lernen und vielleicht später in der Zukunft zu verwenden. Im Moment ist mein Problem das Hinzufügen eines Kommentars zu einem Post. Ich habe den Beitrag Details stark typisierte Ansicht, die den Beitrag anzeigt, und ich rendere eine stark typisierte Teilansicht, die über das Formular verfügt, um einen neuen Kommentar hinzuzufügen. Was ich versuche, dies zu tun ist:Pass-Modell mit festgelegten Werten zu PartialView
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<Blog.Models.Post>" %>
<h2>Details</h2>
<fieldset>
<legend>Fields</legend>
<div class="display-field"><h2><%: Model.Title %></h2></div>
<div class="display-field">
<p><%: Model.Summary %></p>
</div>
<div class="display-field">
<p><%: Model.Content %></p>
</div>
</fieldset>
<div id="comment-section">
<% foreach (var comment in Model.Comments)
{ %>
<div>
<h3><%: comment.Title %></h3>
<p><%: comment.DateAdded %></p>
<p><%: comment.Content %></p>
</div>
<% } %>
</div>
<div>
</div>
<% Html.RenderPartial("Comment/Add", new Blog.Models.Comment { PostID= Model.ID }); %>
<p>
<%: Html.ActionLink("Edit", "Edit", new { id = Model.ID }) %> |
<%: Html.ActionLink("Back to List", "Index") %>
</p>
Und die PartialView hinzufügen ist dieses:
<% using (Html.BeginForm("Add", "Comment")) {%>
<%: Html.ValidationSummary(true)%>
<fieldset>
<legend>Add a comment</legend>
<div class="editor-label">
<%: Html.LabelFor(model => model.Title)%>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Title)%>
<%: Html.ValidationMessageFor(model => model.Title)%>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Content)%>
</div>
<div class="editor-field">
<%: Html.TextAreaFor(model => model.Content, new { Style = "width:500px; height:150px;" })%>
<%: Html.ValidationMessageFor(model => model.Content)%>
</div>
<p>
<input type="submit" value="Add" />
</p>
</fieldset>
<% } %>
Aber in meinem Comment wenn ich das gepostete Kommentar-Objekt, es kommt mit cero (0) als Post-ID, also kann ich es nicht mit dem entsprechenden Post binden. Irgendwelche Gedanken?
Das funktionierte. Ich verwendete ASP.NET MVC Html Helfer für das: <%: Html.HiddenFor (Modell => model.PostID)%> – FelixMM