ASP.NET MVC3 C # - редактирование функциональности в подробном представлении другого контроллера - PullRequest
0 голосов
/ 11 августа 2011

Я пытаюсь создать форум. Я пытаюсь использовать функцию «постредактировать» в «подробностях темы»

У меня есть стандартное представление индекса 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 и / или частичные представления, но я не понимаю. Любой совет, или укажите мне правильное направление, где я могу узнать об этом.

Как всегда, очень ценится.

1 Ответ

1 голос
/ 11 августа 2011

Не уверен, что я понимаю, что вы хотите, но вот как вы могли бы сделать то, что, как вы думаете, вы спрашиваете.

@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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...