asp.net-mvc – 从MVC版本1迁移后,ASP.NET MVC 2 actionlink中断

我正在将我的应用程序从asp.net mvc迁移到mvc版本2,并且有以下问题.

我有寻呼链接<< < > >>我包括在每一页.像这样:

<% Html.RenderPartial("PagingControl",Model); %>

它们存在于ascx文件中,如下所示.

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BankingDB.Controllers.Utility.IPagedSortedobject>" %>
    <div class="paging">
        <div class="prevIoUs-paging">
<!- error!! -><%= Model.HasPrevIoUsPage ? Html.ActionLink("<<","Index",Model.buildParams(1)) : "<<"%>
            <%= Model.HasPrevIoUsPage ? Html.ActionLink("<",Model.buildParams(Model.PrevIoUsPageIndex)) : "<"%>
        </div>
        <div class="paging-details">
            Showing records <%= Model.BaseRecordindex %> to <%= Model.MaxRecordindex %> of <%= Model.TotalRecordCount %>
        </div>
        <div class="next-paging">
            <%= Model.HasNextPage ? Html.ActionLink(">",Model.buildParams(Model.NextPageIndex)) : ">"%>
            <%= Model.HasNextPage ? Html.ActionLink(">>",Model.buildParams(Model.PageCount)) : ">>"%>
        </div>        
    </div>

当我尝试访问页面时,我收到错误

CS0173:条件表达式的类型无法确定,因为’System.Web.Mvc.MvcHtmlString’和’string’之间没有隐式转换

错误标记在上面,似乎是与动作链接.包括控制器名称没有帮助.有任何想法吗?

解决方法

Html.ActionLink()现在返回一个MvcHtmlString,而不是一个字符串.这个新类派生自IHtmlString.您不能自动字符串转换为IHtmlString.
Model.HasPrevIoUsPage ? Html.ActionLink("<<",Model.buildParams(1)) : "<<"

需要改变

Model.HasPrevIoUsPage ? Html.ActionLink("<<",Model.buildParams(1)) : MvcHtmlString.Create("<<")

这个新类将在ASP.NET 4中使用,使“智能”使用新的ASP转义运算符.

<%: Html.ActionLink("My Link","Action","Controller") %> <!-- kNows to not HTML-escape,because ActionLink is an IHtmlString -->
<%: Model.FirstName %> <!-- short hand notation for <%= Html.Escape(Model.FirstName) %> -->

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...