0

私は ASP.net MVC 3.0 の初心者です。自分のデータを WebGrid に表示したいので、このコードをビューに記述します。

@model IEnumerable<MvcApplication3.Models.MOVIE>


@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
    @ViewBag.abc;
</p>

@Html.ActionLink("Asc Title", "Index", new { sortOrder = "asc" })
@Html.ActionLink("Desc Title", "Index", new { sortOrder = "desc" })

<table>
    <tr>
        <th>
            TITLE
        </th>
        <th>
            PRICE
        </th>
        <th>
            RELEASEDATE
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>            
            @Html.DisplayFor(modelItem => item.TITLE)
        </td>
        <td align="right">
            @Html.DisplayFor(modelItem => item.PRICE)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.RELEASEDATE)
        </td>
        <td>
            @Html.ActionLink("Edit Saya", "Edit", new { id=item.ID }) |
            @Html.ActionLink("Details", "Details", new { id=item.ID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.ID }) |          
            @Html.ActionLink("Select", "MoviedanArtis", new { id = item.ID }) 
        </td>
    </tr>
}

</table>

@{    
    var grid = new WebGrid(Model.ToList(), rowsPerPage: 6);    
}

<div id="grid">
    @grid.GetHtml(tableStyle: "grid", 
    headerStyle: "head",
    alternatingRowStyle: "alt",
    columns: grid.Columns(grid.Column("TITLE"), grid.Column("PRICE"), grid.Column("RELEASEDATE")))
</div>

コントローラーはこちら

private MovieEntities db = new MovieEntities();

        //
        // GET: /Coba/        
        public ViewResult Index()
        {           
            return View(db.MOVIEs.ToList());
        }

その後、「クエリの結果を複数回列挙することはできません」というエラーが常に発生します。解決するにはどうすればよいですか?

4

1 に答える 1

0

渡すモデルは、「IEnumerable」を実装するコレクションである必要があります。たとえばList、コレクションとして使用している場合は、を使用してみてくださいIList

@using MyResource = Resources.ComWebResources
@model IList<App.WorksInformation> 
<div id="worksajaxgrid">

@{
  var grid = new WebGrid(Model, rowsPerPage: 6,
 ajaxUpdateContainerId:"worksajaxgrid",
 ajaxUpdateCallback:"ajaxUpdate_Callback");

   @grid.GetHtml(tableStyle: "webGrid",headerStyle: "header", alternatingRowStyle:     "alt", selectedRowStyle: "webgrid-selectedrow",
   columns: grid.Columns(

  grid.Column("SlNo", @MyResource.grid_SlNo, canSort: false, style: "webcolwidthSlNo"),
  grid.Column("WorkOrderId", @MyResource.grid_SCTWorkOrderId, canSort: false),
  grid.Column("Project", @MyResource.lbl_Project, canSort: false),
  grid.Column("WorkOrderNo", @MyResource.grid_WorkOrderNo, canSort: false),
  grid.Column("WorkCode", @MyResource.grid_WorkCode, canSort: false),
  grid.Column("WorkName", @MyResource.grid_WorkName, canSort: false)
 ));
 }
</div>

Webリソースをインストールすると、リソースを使用する代わりに、表示したいラベルを直接配置できます。たとえば、"serial No"代わりに@MyResource.grid_SlNo

あなたのコメントに従って追加された変更。

public class MOVIE
{
   public string TITLE{get;set;}
   public string NAME{get;set;}


}

IList<MOVIE>MOVIEList= new List<MOVIE>{new MOVIE{"Pirates of the Caribbian","PC"}, new MOVIE{"Lord of the Rings","LR"} ..}

このようなモデルを渡す

于 2012-10-10T10:28:05.007 に答える