首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅重新加载局部视图

问仅重新加载局部视图
EN

Stack Overflow用户
提问于 2014-03-19 17:20:56
回答 1查看 581关注 0票数 0

我正在做一个网站,在那里你可以写和读笑话。

所以在我的索引中,我有一个foreach,它显示了所有的笑话。显示的每个笑话都是一个PartialView。你可以投票给每个笑话(向上/向下)。因此,如果有人投票给一个笑话,我想要他投票重新加载的笑话的部分视图。

目前我有一个actionLink,它转到一个控制器操作,在那里我检查他是否已经投票给这个笑话,如果没有,我调用RateJoke()方法。

但是,我不知道我应该将他链接到哪个视图,或者我必须如何做,以便它只重新加载部分视图,而不是整个索引。

我的索引视图:

代码语言:javascript
复制
@using (var db = new Witze.Context())
{
    foreach (var joke in Model)
    {
        @Html.Partial("_Jokes", joke);
    }
}

我的_Jokes PartialView

代码语言:javascript
复制
@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>

HomeController中的My ActionResult Up() (也有一个down ):

代码语言:javascript
复制
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的新手。

也许有一种完全不同的方式。我对任何解决方案都持开放态度。

解释我试图实现的目标:我想要一个页面,在我的数据库中有所有的笑话。每个笑话都可以投票,如果有人投票了一个笑话,我希望这个笑话被重新加载,而不是整个页面。

EN

回答 1

Stack Overflow用户

发布于 2014-03-19 17:34:11

使用@Ajax.ActionLink并使用当前的div笑话进行了更新

代码语言:javascript
复制
@Model.Rating Punkte
<div id="divjoke@Model.JokeId">    
@Ajax.ActionLink("Up", "Up", "Home", new {Model.JokeId}, new AjaxOptions {UpdateTargetId="divjoke"+Model.JokeId} null)

..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22501136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档