我可以在任何控制器中使用WebGrid,如:
var grid = new WebGrid(emailsFetched, columnNames);
我必须在我的ASP.NET MVC项目中向System.Web.Helpers
添加一个引用。
但是当我尝试直接在视图中使用此网格时(为了避免控制器中的实例化和其他设置),它会显示:The type or namespace 'WebGrid' cannot be found
。好的,我也尝试在这里添加一个引用:
@using System.Web.Helpers
但这引发了另一个问题:
There is no build provider registered for the extension '.cshtml'. You can register one in the <compilation><buildProviders> section in the machine.config or web.config. Make sure is has a BuildProviderAppliesToAttribute attribute which includes the value 'Web' or 'All'.
这很奇怪......我在网上看到了很多使用WebGrid的例子,而且不必在cshtml视图中声明任何内容......
你能告诉我怎么解决这个问题吗?或者为什么我会遇到这个非常难看的问题?
答案 0 :(得分:24)
最后我已经注意到了这一点:
<assemblies>
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
必须添加到system.web
部分下的网络配置中,并带有compilation
标记,以便它们显示为:
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
</system.web>
答案 1 :(得分:8)
尝试按照以前在ASP.NET MVC4
项目中测试过的步骤,没有任何问题。
1)在NuGet Package Manager
中打开Visual Studio
并搜索“microsoft-web-helper”并安装。
2)安装后,在解决方案中打开web.config
并更改connectionStringName
,DefaultMembershipProvider
ve DefaultRoleProvider
的{{1}}参数(如果不这样做,您可能会遇到在应用程序配置中找不到'DefaultConnection'或连接字符串为空。“错误。
3)重建项目,然后在剃须刀视图中使用如下所示的微笑定义。
注意:在{{1}中更改“标题”,“控制器”和“操作”名称根据你的项目。
<强> 查看: 强>
DefaultSessionProvider
以下是Html.ActionLinks
中使用的@{
var grid = new System.Web.Helpers.WebGrid(
source: Model,
columnNames: new List<string>() { "Title" },
ajaxUpdateContainerId: "myGrid",
defaultSort: "Name",
canPage: true,
canSort: true,
rowsPerPage: 5
);
grid.SortDirection = SortDirection.Ascending;
}
@grid.GetHtml(
tableStyle: "table", /*your class name for this property*/
headerStyle: "webgrid-header",/*your class name for this property*/
footerStyle: "webgrid-footer", /*your class name for this property*/
rowStyle: "webgrid-row-style", /*your class name for this property*/
alternatingRowStyle: "webgrid-alternating-row",/*your class name...*/ selectedRowStyle: "webgrid-selected-row",/*your class name for this property*/
firstText: "<<",
lastText: ">>",
mode: WebGridPagerModes.All,
fillEmptyRows: true,
columns: grid.Columns(
grid.Column("ApplicantID", "No", style: "span1", canSort: true),
grid.Column("Name", "Name", style: "span2", canSort: true),
grid.Column("Surname", "Surname", style: "span2", canSort: true),
grid.Column("Organization", "Org.", style: "span2", canSort: true),
grid.Column("MeetingId", "Meeting", style: "span1", canSort: true),
//some format usage samples:
//grid.Column("Email", "e-mail", style: "span1", canSort: true, format: @<a href="mailto:@item.Email">@item.Email</a>),
//grid.Column("BirthDate", format: p=>p.BirthDate.ToShortDateString()),
//for using multiple Html.ActionLink in a column using Webgrid
grid.Column("Operations", format: (item) =>
new HtmlString(
Html.ActionLink("Show Details", "Edit", "Admin", new
{
applicantId = item.ApplicantID,
title = "Detail",
@class = "icon-link",
style = "background-image: url('../../Content/icons/detail.png')"
}, null).ToString() +
Html.ActionLink("Edit Record", "Edit", "Admin", new
{
applicantId = item.ApplicantID,
title = "Edit",
@class = "icon-link",
style = "background-image: url('../../Content/icons/edit.png')"
}, null).ToString() +
Html.ActionLink("Delete Record", "Edit", "Admin", new
{
applicantId = item.ApplicantID,
title = "Delete",
@class = "icon-link",
style = "background-image: url('../../Content/icons/delete.png')"
}, null).ToString()
)
)
),
numericLinksCount: 5
)
类。如果您想使用css
定义,只需将样式属性更改为您的样式属性(某些属性是Razor
中的可选属性)。
css
希望这会有所帮助...
答案 2 :(得分:0)
进入这个问题。无法真正获得荣誉,但我卸载了早期版本,并从Nuget重新安装了最新版本的Microsoft ASP.NET MVC4,事情对我有用。希望这有助于其他人。尝试了所有的解决方案,但这是唯一有效的方法。 http://forums.asp.net/t/1823940.aspx?MVC4+WebGrid+problem+in+View+Razor+