ASP.Net MVC在模型错误中定义PageLink

时间:2016-02-27 16:37:02

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我正在关注Youtube上的基本MVC视频,并且看到视频无法解释的错误。我有一个ViewList(如下所示),它给出了以下错误。任何帮助,将不胜感激。这可能是一个简单的错误,因为我是ASP.Net的新手。错误在视图中的已加星标的PageLinks下被抛出。先感谢您。

注意:我假设我必须在我的ProductListViewModel代码中定义PageLinks,但视频没有以这种方式构建。 PagingHelpers是我标记为'HtmlHelpers'的文件夹中的一个类。

错误: 'HtmlHelper'不包含'PageLinks'的定义,也没有扩展方法'PageLinks'可以找到第一个类型为'HTMLHelper'的参数(你是否缺少using指令或汇编引用?)

View:

@model OnlineShoppingStore.WebUI.Models.ProductListViewModel

@{
ViewBag.Title = "Products";
}

@foreach (var p in Model.Products)
{
<div>
    <h3>@p.Name</h3>
    <h4>@p.Price.ToString("c")</h4>
    @p.Description
</div>
}
<div>
   @Html.**PageLinks**(Model.PagingInfo, x => Url.Action("List", new { page = x}))
</div>

ProductListViewModel:

using OnlineShoppingStore.Domain.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace OnlineShoppingStore.WebUI.Models
{
    public class ProductListViewModel
{
    public IEnumerable <Product> Products{ get; set; }
    public PagingInfo PagingInfo { get; set; }
}
}

PagingHelpers (where I define PageLinks):

using OnlineShoppingStore.WebUI.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;

namespace OnlineShoppingStore.WebUI.HtmlHelpers
{
    public static class PagingHelpers
    {
        public static MvcHtmlString PageLinks(this HtmlHelper html,
                                                 PagingInfo pagingInfo,
                                                 Func<int, string> pageUrl)
        {
            StringBuilder result = new StringBuilder();
            for (int i =1; i <= pagingInfo.TotalPages; i ++)
            {
                TagBuilder tag = new TagBuilder("a");
                tag.MergeAttribute("href", pageUrl(i));
                tag.InnerHtml = i.ToString();
                if (i == pagingInfo.CurrentPage)
                {
                    tag.AddCssClass("selected");
                    tag.AddCssClass("btn-primary");
                }
                tag.AddCssClass("btn btn-default");
                result.Append(tag.ToString());
            }
            return MvcHtmlString.Create(result.ToString());
        }
    }
}

1 个答案:

答案 0 :(得分:3)

您的视图不知道扩展方法PagingLink的位置,因此您需要在视图顶部添加带有正确命名空间的using语句:

@using OnlineShoppingStore.WebUI.HtmlHelpers
@model OnlineShoppingStore.WebUI.Models.ProductListViewModel

@{
    ViewBag.Title = "Products";
}
@* the rest of the code *@

下次遇到类似错误时,解决错误的提示可能是您看到的错误消息(特别是粗体文本):

  

(你缺少使用指令还是程序集引用?)