2012-03-23 9 views
0

私の質問はあまりにも単純ですが、困惑しています。私は学習するmvcページを開発している。私はリピータサーバーコントロールを使用しました。またフォームrunatサーバーを追加せずにMvcでgridViewを使用するには?


<asp:Repeater ID="ProductList" runat="server"> 
<ItemTemplate> 
<li> 
<%#Eval("Name") %> 
</li> 
</ItemTemplate> 

:(VIEW)

public partial class ListProduct : ViewPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

       ProductList.DataSource = ViewData["Products"]; 
       ProductList.DataBind(); 
    } 
} 

マイリピーターサーバーコントロールが良く働いています。しかし、私はGridViewコントロールを追加しました。エラーは私を返します。


<asp:Content ID="Content4" ContentPlaceHolderID="ContentPlaceHolder2" runat="server"> 
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> 
    <Columns> 
    <asp:BoundField DataField="id" HeaderText="" Visible="false" /> 
    <asp:BoundField DataField="Name" HeaderText="" Visible="true" /> 

    </Columns> 
    </asp:GridView> 

<asp:Repeater ID="ProductList" runat="server"> 
<ItemTemplate> 
<li> 
<%#Eval("Name") %> 
</li> 
</ItemTemplate> 
</asp:Repeater> 

</asp:Content> 

VIEW:



      GridView1.DataSource = ViewData["Products"]; 
      GridView1.DataBind(); 

エラー**:タイプのコントロール 'ContentPlaceHolder2_GridView1' 'のGridView' にrunat =サーバーとフォームタグの内側に配置する必要があります。**

フォームrunatサーバーを追加して問題を理解し解決しました。しかし、私は理由を理解できないのですか? RepeaterとGridViewはサーバーコントロールです。リピーターの使用のみにエラーリピーターはありません。 GRidViewの戻りエラー。どうして?

+0

MVCの場合、私はTelerikのコントロールを提案しています。それらは.NET上のMVC(http://www.telerik.com/products/aspnet-mvc.aspx)にかなり良いです。これらのコントロールは、オープンソース(GPL v2) – MilkyWayJoe

+0

@MilkyWayJoeとしてリリースされています。それとKendoUIも同様です。 –

答えて

6

何をしていますか? ASP.NET MVCアプリケーションのサーバーサイドコントロールしないでください。この狂気を止めなさい。

それはViewStateのが、GridViewのに依存しないようリピーターはうまくいくかもしれない - >それを忘れます。また、リピータを忘れる。 ASP.NET MVCアプリケーションでrunat="server"を持つものはすべて忘れてください(WebFormsビューエンジンを使用している場合はコンテンツプレースホルダを除く)。

ASP.NET MVCでは、WebGridヘルパーを使用してグリッドをレンダリングできます。また、リピータをエディタまたはディスプレイテンプレートで置き換えることもできます。

GridViewsとそのようなものを使用する必要がある場合、ASP.NET MVCを行うのは本当に意味がありません。この目的のために従来のWebFormを使用します。

関連する問題