Отображение данных на странице ASPX без использования повторителя или других элементов управления - PullRequest
0 голосов
/ 09 января 2012

У меня есть пример кода ниже, который работает просто отлично (я немного обрезал запрос для примера). Я хочу отобразить данные в файле ASPX, но я не хочу использовать ретранслятор, сетку данных или что-то подобное. Я должен отметить, что я не работаю в MVC3.

В ASP 3.0 было возможно использовать цикл DO WHILE, чтобы сделать это, я не могу заставить его работать в ASPX. Может кто-нибудь опубликовать фрагмент кода, который будет делать эту работу? Большое спасибо заранее.

    public void sqlconn2(object sender, EventArgs e)
    {
        SqlConnection cn = null;
        cn = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlConn"].ToString());
        cn.Open();
        SqlCommand cmd = new SqlCommand("SELECT DISTINCT submajor.subid FROM subdetails", cn);
        myreader = cmd.ExecuteReader();
    }

    public static SqlDataReader myreader { get; set; }

Редактировать: Если я поместил код прямо в разметку, он работает. Очевидно, я не хочу этого делать. Вот рабочий пример кода разметки:

            <%
        System.Data.SqlClient.SqlConnection cn = null;
        cn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["sqlConn"].ToString());
        cn.Open();
        System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("SELECT DISTINCT submajor.subid FROM subdetails", cn);
        myreader = cmd.ExecuteReader();
        %>
        <% 
        while (myreader.Read())
           {
               if (myreader["subid"] != null)
               {%>
                   <div><%Response.Write(myreader["subid"]);%></div>
               <%}
           }
       %>

Ответы [ 2 ]

1 голос
/ 09 января 2012

Вы можете попробовать приведенный ниже код.

в своей разметке aspx добавить элемент управления Label

<asp:Label id="container" runat="server"/>

В своем коде позади используйте ваш datareader в том месте, где вам нужно.

 while (myreader.Read())
           {
               if (myreader["subid"] != null)
               {
                   string str = string.Format("<div>{0}</div>",myreader["subid"]);
                   container.Controls.Add(new LiteralControl(str)); //label we added in markup
               }
       }
1 голос
/ 09 января 2012

К сожалению, здесь есть несколько проблем.ASPX (ASP.NET WebForms) это все об использовании элементов управления.Выполнение этого каким-либо иным способом нарушает модель.

ASP.NET MVC в значительной степени требует, чтобы вы делали это самостоятельно, без использования элементов управления.

Его нельзя суммироватьбыстро в ответе здесь, но http://www.asp.net/mvc отлично, а приложение Music Store Tutorial App - http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1 - действительно хорошее введение / объяснение.

(Согласно вашему недавнему редактированиюв MVC вы пишете код, который представляет данные в разметке, чего вы не хотите делать, но это действительно то, к чему это относится. Обычные веб-формы ASPX абстрагируют представления в элементы управления с использованием свойств и т. д., а MVC позволяет представлять в разметке представленияэто два лучших варианта)

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