如何在Mvc中使用gridView而不添加表单runat服务器

本文关键字:添加 表单 服务器 runat gridView Mvc | 更新日期: 2023-09-27 18:28:53

我的问题太简单了,但令人困惑。我有一个开发mvc页面来学习。我使用了中继器服务器控制。


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

还有:(查看)

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=server的表单标记内。**

通过添加表单runat服务器,我理解并解决了这个问题。但我不明白为什么?Repeater和GridView是服务器控件。在只有中继器的使用中没有错误中继器。GRidView返回错误。为什么?

如何在Mvc中使用gridView而不添加表单runat服务器

你在做什么?ASP.NET MVC应用程序中的服务器端控件?请不要。停止这种疯狂。

没有

Repeater可能会工作,因为它不依赖于ViewState,但GridView->忘记这一点。还忘了中继器。还请忘记ASP.NET MVC应用程序中具有runat="server"的任何内容(如果使用WebForms视图引擎,则内容占位符除外)。

在ASP.NET MVC中,可以使用WebGrid帮助程序来呈现网格。你可以用编辑器或显示模板替换你的中继器。

如果你需要使用GridViews之类的东西,那么做ASP.NET MVC真的没有意义。为此,请使用经典的WebForm。