2012-06-14 64 views
8

私は次のように任意のコントローラでWebGridを使用することができる午前:私はこのためにSystem.Web.Helpersに私のASP.NET MVCプロジェクトに参照を追加する必要がありましたcshtmlビューでWebGridを使用するには?

var grid = new WebGrid(emailsFetched, columnNames);

しかし、ビューでこのWebグリッドを使用しようとすると(インスタンシエーションやコントローラ内の他の設定を避けるため)、The type or namespace 'WebGrid' cannot be foundと表示されます。

@using System.Web.Helpersが、これは別の問題がスローされます:[OK]を、私もここに参照を追加しようとしました

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ビューで何も宣言する必要はありません。

これを解決する方法を教えてください。なぜ私はこの非常に醜い問題に遭遇するのですか?

答えて

22

最後に、私はこのことに気づくことができました:

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

<assemblies> <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </assemblies>

が、それは次のようになりますので、compilationタグをwithing、system.webセクションの下で、ウェブの設定に追加する必要があります

6

ASP.NET MVC4プロジェクトで以前にテストされた以下の手順を実行しても問題はありません。

1)Visual Studioで開くNuGet Package Manager「マイクロソフト・ウェブヘルパー」を検索し、インストールします。

2)それはあなたのソリューションでweb.configを開き、DefaultMembershipProviderためconnectionStringNameパラメータ、DefaultRoleProviderはあなたがいない場合、あなたが発生する可能性がある(DefaultSessionProvider VEのを変更インストールした後「DefaultConnectionを」をアプリケーションの構成では見つかりませんでしたか、接続文字列があります

3)プロジェクトを再構築して、以下のようなスミラ定義をカミソリビューで使用してください。

注:"タイトル" 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 
) 


ここでは、以下のRazorで使用cssクラスです。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> 
} 


は、この情報がお役に立てば幸いです...

0

は、この問題に遭遇しました。本当にクレジットを取ることはできませんが、以前のバージョンをアンインストールして、NugetからMicrosoft ASP.NET MVC4の最新バージョンを再インストールしました。これが他の人に役立つことを願っていますすべての解決策を試しましたが、これがうまくいったのはこれだけです。 http://forums.asp.net/t/1823940.aspx?MVC4+WebGrid+problem+in+View+Razor+

関連する問題