私は WebGrid を次のような任意のコントローラーで使用できます:
var grid = new WebGrid(emailsFetched, columnNames);
このために、ASP.NETMVCプロジェクトのSystem.Web.Helpers
への参照を追加する必要がありました。
しかし、このWebグリッドをviewで直接使用しようとすると(コントローラーでのインスタンス化やその他の設定を回避するため)、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ビューで何も宣言する必要がないネット上の例を十分に見てきました...
これを解決する方法を教えてください。または、なぜこの非常に醜い問題に遭遇するのですか?
最後に、私はこれに気付くことができました:
<assemblies> <add Assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </assemblies>
web構成の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>
ASP.NET MVC4
プロジェクトで以前にテストされた以下の手順を問題なく実行してみてください。
1)NuGet Package Manager
でVisual Studio
を開き、「Microsoft-web-helper」を検索してインストールします。
2)インストール後、ソリューションでweb.config
を開き、connectionStringName
、DefaultMembershipProvider
ve DefaultRoleProvider
のDefaultSessionProvider
パラメーターを変更します(そうでない場合、アプリケーション構成で「DefaultConnection」が見つからない可能性があります)または、接続文字列が空です。」エラー。
)プロジェクトを再構築してから、レイザービューで以下のようなsmilar定義を使用します。
注:変更 "タイトル"、 "コントローラー"および "アクション"プロジェクトに応じた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
定義を使用する場合は、スタイルプロパティを自分のものに変更するだけです(一部のプロパティはRazor View
のプロパティのようにオプションです)。
<style type="text/css">
.webgrid-operations { /*for limiting the width of Operations
menu used in the WebGrid*/
width: 65px;
}
.webgrid-header td {
text-align: left;
}
.webgrid-header th {
background-color: #EFEFEF;
margin-bottom: 2px;
}
.webgrid td {
padding-right: 15px;
}
.webgrid-footer td {
font-family: 'open_sanssemibold', sans-serif;
font-size: 1em;
text-align: right !important;
padding-right: 21px !important;
color: #000;
background-color: #EFEFEF;
}
.webgrid-footer td a {
text-align: right !important;
padding: 0 .4em 0 .4em;
font-size: .83em;
text-decoration: none;
color: #FFFFFF;
border: 1px solid #C0C0C0;
background-color: #808080;
}
.webgrid-footer td a:hover {
background-color: #6BBEC7;
}
.webgrid-footer td a.selected {
background-color: #f00;
color: #f00;
}
.webgrid a {
color: #fff;
}
.colRowButton {
width: 70px;
text-align: left;
}
.webgrid-row-style {
/*border-bottom: 1px solid #E8EEF4;*/
}
.webgrid-alternating-row td {
/*background-color: #f9f9f9;*/
}
.webgrid-selected-row {
/*font-weight: bold;*/
}
<style type="text/css">
a.icon-link {
background-color: transparent;
background-repeat: no-repeat;
background-position: 0px 0px;
border: none;
cursor: pointer;
width: 16px;
height: 16px;
margin-right: 8px;
vertical-align: middle;
}
.span5 {
width:380px
}
.span4 {
width:300px
}
.span3 {
width:220px
}
.span2 {
width:140px
}
.span1 {
width:60px
}
</style>
}
お役に立てれば...
この問題に遭遇しました。本当に信用できませんが、以前のバージョンをアンインストールし、Nugetから最新バージョンのMicrosoft ASP.NET MVC4を再インストールしましたが、問題なく動作しています。これが他の誰かに役立つことを願っています。すべての解決策を試しましたが、うまくいったのはこれだけでした。 http://forums.asp.net/t/1823940.aspx?MVC4+WebGrid+problem+in+View+Razor+