2011-08-11 12 views
0

フォーラムを作成しようとしています。私は 'スレッドの詳細'に '投稿の編集'の機能を持たせようとしていますASP.NET MVC3 C# - 別のコントローラの詳細ビューでの機能の編集

私は標準的なOTBスレッドのインデックスビューを持っていて、「詳細」をクリックするとOTBスレッドの詳細が表示されます。 foreachは、そのスレッドの下にある投稿を表示します。

私は現在、下に表示されている投稿の編集/追加を苦労しています。特に表示/非表示。管理者は、ポスト 'ショー' へのボタンをクリックするまで

文脈では、すべての記事を '隠れた' され、そしてその逆

スレッド制御部:

public ViewResult Details(int id) 
    { 

     tb_SH_Forum_Threads tb_sh_forum_threads = db.tb_SH_Forum_Threads.Single(t => t.Thread_ID == id); 
     ViewBag.Private_ID = new SelectList(db.tb_SH_Forum_PrivateDesc, "Private_ID", "Private_Desc"); 
     return View(tb_sh_forum_threads); 
    } 

ビュー:

@model Shareholder_Forum.Models.tb_SH_Forum_Threads 

@{ 
ViewBag.Title = "Details"; 
} 

<h2>Details</h2> 

<fieldset> 
    <legend>tb_SH_Forum_Threads</legend> 

<div class="display-label">Thread_Title</div> 
<div class="display-field"> 
    @Html.DisplayFor(model => model.Thread_Title) 
</div> 

<div class="display-label">Thread_Details</div> 
<div class="display-field"> 
    @Html.DisplayFor(model => model.Thread_Details) 
</div> 

<div class="display-label">tb_SH_Forum_Categories</div> 
<div class="display-field"> 
    @Html.DisplayFor(model => model.tb_SH_Forum_Categories.Category_Description) 
</div> 

<div class="display-label">Thread_Date</div> 
<div class="display-field"> 
    @Html.DisplayFor(model => model.Thread_Date) 
</div> 

<div class="display-label">Replies</div> 
<div class="display-field"> 
    @Html.DisplayFor(model => model.Replies) 
</div> 
</fieldset> 

@foreach 
(var post in Model.tb_SH_Forum_Posts.Where(w => w.Private_ID == 1).OrderBy(o =>  o.Post_Date)) 
{ 

     <div class ="post"> 
<fieldset> 
     <p class="post_details">At @post.Post_Date By @(post.Anon == true ? "Anonymous" : post.Username)   
     </p> 
     @post.Post_Desc 

</fieldset> 
     </div>} 

<p> 
    @Html.ActionLink("Back to List", "Index")| 

</p> 

RenderActionやPartial Viewを使用する必要があると思いますが、わかりません。アドバイスをするか、正しいことを教えてください。

いつもと非常に感謝しています。

答えて

1

私はあなたが望むものを理解していますが、私があなたが尋ねていると思うことができる方法はここにあります。それ保存

@foreach (var post in Model.tb_SH_Forum_Posts.Where(w => w.Private_ID == 1).OrderBy(o =>  o.Post_Date)) 
{ 
    if(post.IsEditable) //however you're determining if they can edit the post. Alternatively display both this and the else and use javascript to toggle which one you show 
    { 
     ///...Your old view post code 
    } 
    else 
    { 
     @Html.RenderPartial("EditPost", new {postdata = post}) 
    } 
} 

モデルを作る

public class PostDataViewModel 
{ 
    public Post PostData 
    { 
     get; 
     set; 
    } 
} 

EditPost.cshtml

@model PostDataViewModel 

// The editable form and button to submit to SaveForumPost action 

public virtual ActionResult SaveForumPost(PostaDavaViewModel model) 
{ 
    //... save edits 
    // either return a redirect to Detail, or if you don't want to refresh the page call this with ajax 
} 
+0

とのお返事ありがとうございました。私はモデルの部分で少し失われてしまいます(なぜなら、アプリケーションDBを最初に作成しなければならず、コード・モデルでの経験はゼロです)。 – Amy

+0

ご協力いただきありがとうございます! – Amy

+0

問題ありません。モデルはPartialView内からあなたの投稿を特定して編集するために必要な情報です。私はあなたがあなたのクラスに名前をつけたことを知らないので、私はそれをPostと呼んでいます。その不明な部分のどれかがちょうどどの部分かと言うと。 – DMulligan

関連する問題