部分视图中的Html.ActionLink

时间:2010-03-11 21:14:28

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

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

<%  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”。 我希望每个标题链接指向具有参数的特定文章,例如我在局部视图中设置。

感谢。

2 个答案:

答案 0 :(得分:2)

我认为你没有正确使用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

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

答案 1 :(得分:0)

我能够通过在RecentArticles动作中使用以下调用来解决问题:

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

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

谢谢!