我正在一個網站上工作,在這裏你可以寫和讀笑話。重新加載部分視圖
因此,在我的索引中,我有一個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。
也許有一個完全不同的方式來做到這一點。我願意接受任何解決方案。
說明我想要實現的:我想要一個頁面,所有的笑話都在我的數據庫中。每個笑話都可以投票,如果有人投票說笑話,我想讓這個笑話重新加載,而不是整個頁面。
試試這個類似的帖子:http://stackoverflow.com/questions/17776929/refresh-only-partial- view-in-mvc4 –
你有沒有想過使用ajax發佈upvote或downvote行動,併成功增加或減少櫃檯?它在我看來你是過於複雜的事情。您的ajax方法可以通過使用jQuery的向上和向下鏈接觸發。 – Chris