Как использовать gridView в Mvc без добавления сервера runat формы? - PullRequest
0 голосов
/ 23 марта 2012

Мой вопрос слишком простой, но загадочный.У меня есть разработка страниц MVC, чтобы учиться.Я использовал контроль сервера Repeater.


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

VIEW:



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

Ошибка **: элемент управления 'ContentPlaceHolder2_GridView1' типа 'GridView' должен быть помещен в тег формы с runat = server.**

Я понял и решил проблему, добавив сервер runat формы.Но я не понимаю ПРИЧИНЫ?Повторитель и GridView являются управлением сервером.Нет повторителя ошибок только в использовании повторителя.Ошибка возврата GRidView.Почему?

1 Ответ

6 голосов
/ 23 марта 2012

Что ты делаешь?Элементы управления на стороне сервера в приложении ASP.NET MVC?Пожалуйста, не надо.Остановите это безумие.

Нет.

Повторитель может работать, поскольку он не зависит от ViewState, но GridView -> забудьте об этом.Также забудьте о Repeater.Также забудьте обо всем, что имеет runat="server" в приложении ASP.NET MVC (кроме заполнителей содержимого, если вы используете механизм просмотра WebForms).

В ASP.NET MVC вы можете использовать помощник WebGridвизуализировать сетку.И вы можете заменить свой Repeater на шаблоны Editor или Display.

Нет смысла делать ASP.NET MVC, если вам нужно использовать GridView и тому подобное.Для этого используйте классическую веб-форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...