【问题标题】:Html.ActionLink in Partial View部分视图中的 Html.ActionLink
【发布时间】:2010-03-11 21:14:27
【问题描述】:

我在我的母版页中使用以下代码:

<%  Html.RenderAction("RecentArticles","Article"); %>

RecentArticles Action(在 ArticleController 中)在哪里:

[ChildActionOnly]
    public ActionResult RecentArticles()
    {
        var viewData = articleRepository.GetRecentArticles(3);

        return PartialView(viewData);
    }

以及我的 RecentArticles.ascx 部分视图中的代码:

<li class="title"><span><%= Html.ActionLink(article.Title, "ViewArticle", new { controller = "Article", id = article.ArticleID, path = article.Path })%></span></li>

问题是文章的所有链接(构建在局部视图中)都指向相同的 url-“~/Article/ViewArticle”。 我希望每个标题链接都指向具有我在局部视图中设置的参数的特定文章。

谢谢。

【问题讨论】:

    标签: asp.net asp.net-mvc master-pages partial-views renderaction


    【解决方案1】:

    我认为您没有正确使用ActionLink。将ActionLink代码更改为:

    Html.ActionLink(
        article.Title,
        "ViewArticle",
        "Article",   // put the controller here
        new
        {
            id = article.ArticleID,
            path = article.Path 
        },
        null)
    

    注意null 在结尾处。

    编辑:你为什么在你的控制器中使用[ChildActionOnly]?由于它是 MVC 2 功能,我假设您使用的是 MVC2?尝试删除它并查看以下文章:

    http://www.davidhayden.me/2009/11/htmlaction-and-htmlrenderaction-in-aspnet-mvc-2.html

    我认为问题与您的部分未渲染有关。我将首先尝试验证您的局部渲染是否正确。一旦您确认开始调试部分不输出的原因。

    【讨论】:

    • 嗨,凯尔西,谢谢,但这没有帮助。我还注意到,无论我在局部视图中放置什么,比如添加一个带有内容的 div,它都不会呈现到浏览器中,我一直在获取最近的文章列表,链接都错了。我开始认为视图可能根本没有呈现,显示的只是最近的文章动作。如果我错了,请纠正我...
    【解决方案2】:

    我能够通过在我的最近的文章操作中使用以下调用来解决问题:

    return PartialView("~/Views/Shared/Article/RecentArticles.ascx", viewData);
    

    似乎根本没有渲染局部视图,

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-17
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多