【问题标题】:ASP.NET MVC2 rendering a partial view with its own controllerASP.NET MVC2 使用自己的控制器呈现局部视图
【发布时间】:2011-02-15 03:25:03
【问题描述】:

我有以下部分视图 NewsSummary.ascx 用于显示新闻文章摘要列表:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<AkwiMemorial.Models.Article>>" %>
   <table>    
    <% foreach (var item in Model as IEnumerable<AkwiMemorial.Models.Article>)
       { %>

        <tr>            
             <td>
             <strong>
                <%= Html.Encode(String.Format("{0:MMMM dd yyyy}", item.DateCreated)) %>
             </strong>             
            </td>
            <td>
                <%= Html.Encode(item.Abstract) %>
            </td>
           <td> 
              <a class="link1"> <%= Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ })%></a>                               
            </td>          
        </tr>    
    <% } %>
    </table>

My HomeController 获取要显示的文章,并在呈现之前在 Index.aspx 的 ViewData 字典中创建一个条目。然后使用 Html.RenderPartial 在 Index.aspx 中呈现部分视图,其中新闻文章列表作为其模型传递,如下所示:

<% Html.RenderPartial("NewsSummary", ViewData["news"]); %>

现在,我已经有了一个 NewsController,它通过给定的 ID 获取新闻文章。使用代码,单击 NewsSummary 部分视图中每个文章摘要的详细信息链接会调用我的 HomeController 中称为详细信息的操作。如何将此操作与我的 NewsController 中的 Details 方法联系起来。我查看了 Html.RenderAction 但无法确定它在这种情况下如何为我工作。

有什么想法吗?或者我是否以错误的方式处理这个问题?

【问题讨论】:

    标签: asp.net asp.net-mvc-2


    【解决方案1】:

    您应该将控制器指定为Html.ActionLink 的参数,如下所示:

    <%= Html.ActionLink("Details", "Details", "News", new { /* id=item.PrimaryKey */ }, null) %>
    

    【讨论】:

    • 这样做了,我现在得到错误:找不到资源。说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。请求的 URL:/NewsController/Details/2。尝试将控制器名称指定为“新闻”,但这没有帮助。我不明白。
    • 您是否为该 URL 设置了路由?
    • 对不起,控制器名称中的错误 - 正如您所指出的那样,它应该是“新闻”。我已经更新了答案以反映这一点。您描述的下一个问题听起来像是路由问题。您需要弄清楚什么是正确的 URL 来触发您的控制器操作并相应地调整对 ActionLink 的调用,或者如果更合适,请考虑使用 RouteLink。
    • 再次感谢您的帮助。我正在使用 MVC 附带的默认路由。基于这个默认路由,我应该能够访问 NewsController/Details 方法,但这并没有发生。当我点击链接时,执行不会到达我在 NewsController.Details(int?) 中的断点。
    • 你能把这个问题作为一个新问题发布吗?这将提高您获得好答案的机会。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多