您的位置 首页 asp.Net

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) %> -->

关于作者: dawei

【声明】:金华站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

热门文章