2012-03-23 4 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> 

보기 :



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

오류 ** :. 유형 '의 GridView'의 컨트롤 'ContentPlaceHolder2_GridView1가'RUNAT = 서버 폼 태그 안에 위치해야합니다 **

폼 런트 서버를 추가하여 문제를 이해하고 해결했습니다. 그러나 나는 이유를 이해하지 못합니까? Repeater와 GridView는 서버 컨트롤입니다. 리피터 사용에만 오류 리피터가 없습니다. GRidView 반환 오류입니다. 왜?

+0

MVC의 경우 Telerik 's Controls ..를 제안합니다. .NET MVC (http://www.telerik.com/products/aspnet-mvc.aspx)에 꽤 좋습니다. 이 컨트롤들은 오픈 소스 (GPL v2) – MilkyWayJoe

+0

@MilkyWayJoe로 풀어 놓았습니다. KendoUI 또한 제안했습니다. –

답변

6

뭐하시는 거예요? ASP.NET MVC 응용 프로그램의 서버 측 컨트롤? 제발 하지마. 이 광기를 멈춰라.

번호

리피터 그것의 ViewState 만의 GridView에 의존하지 않는 작동 할 수 있습니다 -> 그것에 대해 잊어. 또한 리피터 (Repeater)도 잊어 버려. 또한 ASP.NET MVC 응용 프로그램에서 runat="server"이있는 항목은 잊어 버리십시오 (WebForms보기 엔진을 사용하는 경우 콘텐츠 자리 표시 자 제외).

ASP.NET MVC에서 WebGrid 도우미를 사용하여 표를 렌더링 할 수 있습니다. 그리고 Repeater를 Editor 또는 Display 템플릿으로 대체 할 수 있습니다.

GridViews와 같은 것을 사용해야하는 경우 ASP.NET MVC를 수행 할 필요가 없습니다. 이 목적으로 기존 WebForm을 사용하십시오.

관련 문제