2014-03-19 101 views
0

我正在一個網站上工作,在這裏你可以寫和讀笑話。重新加載部分視圖

因此,在我的索引中,我有一個foreach,它顯示了所有的笑話。顯示的每個笑話都是一個PartialView。 你可以爲每個笑話投票(上/下)。所以如果somone投了一個笑話,我想要他的投票重新加載的笑話的部分觀點。

目前我有一個actionLink,這是一個控制器動作,在那裏我檢查他是否已經投了笑話,如果沒有,我調用RateJoke()方法。

但後來我不知道我應該把他連接到什麼視圖,或者我該怎麼做,以便它只是重新加載部分視圖而不是整個索引。

我的索引視圖:

@using (var db = new Witze.Context()) 
{ 
    foreach (var joke in Model) 
    { 
     @Html.Partial("_Jokes", joke); 
    } 
} 

我_Jokes PartialView

@Model.Rating Punkte 
@Html.ActionLink("Up", "Up", "Home", new {Model.JokeId}, null) 
@Html.ActionLink("Down", "Down", "Home", new {Model.JokeId}, null) 
<div class="anzeige"> 
    <div>@Model.JokeText</div> 
</div> 
<div class="left"> 
    @foreach (var categories in Model.Categories) 
     { 
      @Html.ActionLink(categories.Name, "jokes", "categorie", new {categories.CategorieId}, null) 
     } 
</div> 
<div class="right"> 
     von: @Model.Creator.Name um: @Model.Date 
</div> 

我的ActionResult向上()在HomeController的(有一個向下藏漢):

public ActionResult Up(int jokeId) 
    { 
     int LoggedInUserId = WebSecurity.CurrentUserId; 
     var LoggedInUser = db.User.Single(u => u.UserId == LoggedInUserId); 
     ICollection<Joke> VotedJokes = LoggedInUser.Voted; 
     bool voted = false; 
     foreach (var VotedJoke in VotedJokes) 
     { 
      if (VotedJoke.JokeId == jokeId) 
      { 
       voted = true; 
      } 
     } 
     if (voted == false) 
     { 
      Logik.RateJoke(true, jokeId, LoggedInUserId); 
     } 

     Joke joke = db.Jokes.Single(j => j.JokeId == jokeId); 

     return PartialView("_Jokes", joke); 
    } 

所以有人幫忙/解釋我該怎麼做?我很新MVC。

也許有一個完全不同的方式來做到這一點。我願意接受任何解決方案。

說明我想要實現的:我想要一個頁面,所有的笑話都在我的數據庫中。每個笑話都可以投票,如果有人投票說笑話,我想讓這個笑話重新加載,而不是整個頁面。

+0

試試這個類似的帖子:http://stackoverflow.com/questions/17776929/refresh-only-partial- view-in-mvc4 –

+0

你有沒有想過使用ajax發佈upvote或downvote行動,併成功增加或減少櫃檯?它在我看來你是過於複雜的事情。您的ajax方法可以通過使用jQuery的向上和向下鏈接觸發。 – Chris

回答

1

使用@Ajax.ActionLink,並與當前的div笑話

@Model.Rating Punkte 
<div id="[email protected]">  
@Ajax.ActionLink("Up", "Up", "Home", new {Model.JokeId}, new AjaxOptions {UpdateTargetId="divjoke"+Model.JokeId} null) 

更新中...

+0

Ty爲您的輸入,但與ActionLink,在控制器我必須鏈接到某處,如果我鏈接到_Jokes它只是顯示partialview,如果我鏈接到索引,它會加載整個頁面。 你能解釋我該怎麼做? – WTFisOssi

+0

允許使用鏈接Ajax.ActionLink而不是Html.ActionLink來只更新頁面的一部分,只要你返回一個局部視圖 –

相關問題