在这种情况下,什么是适当的MVC 2页面导航协议

时间:2011-06-28 14:55:36

标签: asp.net-mvc-2 navigation html.actionlink

我在任务中取得了进步,但遇到了一个棘手的问题。在我研究它时,我想我会在这个论坛上提出这个问题,所以如果其他人遇到类似的问题,他们可以依靠我们在这里提供的奖学金。

关于问题...... 我将从XML字符串接收的数据呈现为网格格式的视图。我希望能够通过单击该行中的链接导航到另一个页面。该链接将带我进一步详细了解所提供的数据。我将使用链接上显示的一些数据来查询我的xml(通过LINQ to XML)并获取相应的行以在下一页(视图)上呈现。我的问题是,我将如何在MVC中执行此操作?在vanilla asp.net中,我只是将这些信息放入查询字符串或其他一些简单的状态管理变量中。我很困惑如何使用MVC2完成这项工作? 这是我目前的代码

     <% foreach (var item in Model) { %>

    <tr>
        <td>                
            <%: Html.ActionLink("View Detailed Patient Info", "TemplateInfo", "PatientACO", new {  PopulationPatientID=item.PopulationPatientID } )%> |                
        </td>
        <td>
            <%: item.populationID %>
        </td>
        <td>
            <%: item.PopulationPatientID%>
        </td>
        <td>
            <%: item.populationOwner %>
        </td>
        <td>
            Table Column3
        </td>
    </tr>

<% } %>

该代码在我看来,我想将那个PopulationPatientID发送给一个控制器,然后该控制器将用它来查询我的XML。是否有我可以使用的HTML.ActionLink()的重载,这将帮助我完全解决这个问题?我是否提到我尝试导航到的ActionLink需要一个字符串参数?任何帮助或想法都会很棒。我会继续我的研究,如果我遇到行业标准的做法,我会发一个答案。

感谢。

1 个答案:

答案 0 :(得分:0)

您没有提及您的路由设置,但如果您仍在使用默认设置...

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults

您指定了操作(TemplateInfo)和控制器(PatientACO),但您将id参数的名称更改为PopulationPatientID。请记住,参数的名称在MVC(约定与配置)中很重要。因此,将ActionLink()调用更改为:

    <%: Html.ActionLink("View Detailed Patient Info", "TemplateInfo", "PatientACO", new {  id=item.PopulationPatientID } )%> |