2

我用我的母版页下面的代码:Html.ActionLink在局部视图

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

其中RecentArticles行动(在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> 

问题是所有链接的文章(它是内置的部分视图)导致相同的网址 - “〜/ Article/ViewArticle”。 我希望每个标题链接都可以通过像在部分视图中设置的参数导向特定文章。

谢谢。

回答

2

我认为你没有正确使用ActionLink。在然后结束

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

注意的null:在ActionLink代码更改。

编辑:为什么你在你的控制器中使用[ChildActionOnly]?既然它是一个MVC 2功能,我假设你正在使用MVC2?尝试删除它,看看下面的文章:

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

我认为这个问题与您的部分不渲染做。我首先尝试验证你的局部渲染是否正确。一旦确认开始调试为什么不输出部分。

+0

嗨凯尔西,谢谢,但它没有帮助。我也注意到,无论我放在部分视图中,就像添加一个带有内容的div,它不会被渲染到浏览器中,我不断收到最近的文章列表,并且链接都是错误的。我开始想,也许这个视图并没有被渲染出来,显示的只是RecentArticles动作。如果我错了,请纠正我的错误... – vobs 2010-03-12 12:16:31

0

我能够在我的RecentArticles动作用下面的调用来解决这个问题:

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

这似乎是局部视图没有被呈现在所有,

谢谢!