我正在关注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());
}
}
}
答案 0 :(得分:3)
您的视图不知道扩展方法PagingLink
的位置,因此您需要在视图顶部添加带有正确命名空间的using
语句:
@using OnlineShoppingStore.WebUI.HtmlHelpers
@model OnlineShoppingStore.WebUI.Models.ProductListViewModel
@{
ViewBag.Title = "Products";
}
@* the rest of the code *@
下次遇到类似错误时,解决错误的提示可能是您看到的错误消息(特别是粗体文本):
(你缺少使用指令还是程序集引用?)