|
|
|
Forum Guru
      
участник
Last Login: 16.05.2007 12:30
Сообщ.: 71,
Visits: 127
|
|
| Не могу найти аналог метода GET в ASP.NET ! я знаю что в принципе есть, но не знаю что конкретно искать! Подскажите плз!!!
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| В каком смысле? Считывать переменные переданные через строку запроса можно через коллекцию Request.QueryString. Это тебя интересует?
|
|
|
|
|
Forum Guru
      
участник
Last Login: 16.05.2007 12:30
Сообщ.: 71,
Visits: 127
|
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
string id = Request.QueryString["id"]; if (null != id) { // ... }
|
|
|
|
|
Forum Guru
      
участник
Last Login: 16.05.2007 12:30
Сообщ.: 71,
Visits: 127
|
|
Пишу такой код посмотрел в хелпе
private void Page_Load(object sender, System.EventArgs e)
{
label1.Text=Request.QueryString("id");
}
или
private void Page_Load(object sender, System.EventArgs e)
{
//label1.Text = Request["id"].ToString();
}
В обоих вариантах работает, есть ли какие нибудь отличия +/- ?
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Разница есть. Request.QueryString["название_параметра"] возвращает значение этого параметра (в виде объекта типа System.String) или null если такого параметра не существует. Значит вызов ToString() является лишним так как значение и так уже является строкой. Главное же отличие, что если параметр с именем id не будет передан, то ты получишь исключение NullReferenceException. Поэтому надо всегда проверять, существует ли параметр с заданным именем, как сделано в моем примере.
|
|
|
|
|
Forum Guru
      
участник
Last Login: 16.05.2007 12:30
Сообщ.: 71,
Visits: 127
|
|
А как вот ее создать динамически такую строку я попробовал так но не получается!
private void Page_Load(object sender, System.EventArgs e) { SqlConnection connect = null; SqlDataReader reader = null; try { connect = new SqlConnection("........."); SqlCommand command = new SqlCommand("select id, "+ " from t_news ", connect); connect.Open();
reader = command.ExecuteReader(); NewsRep.DataSource = reader; NewsRep.DataBind(); } catch (Exception ex) { label1.Text=ex.Message; if (null != reader) reader.Close(); if (null != connect) connect.Close(); } } }
а в коде пытаюсь вывести так
<TABLE width="100%"> <TBODY><asp:Repeater id=NewsRep runat="server"><ITEMTEMPLATE> <TR><% string id = DataBinder.Eval(Container.DataItem,"id");%> <TD><A href="read.aspx?id=<%=id%>">Read more</A> </TD></TR></ITEMTEMPLATE></asp:Repeater></TBODY></TABLE>
в общем не работает)))
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| 2 shatalinalex Скажи ты хотя бы смотрел ссылки на QuickStart-ы по ASP.NET котоорые я тебе давал? Хотя судя по вопросам, нет. На этапе привязки данных нельзя использовать блоки <% ... %>. Можно только <%# ... %>. В твоем случае это будет выглядеть так: <table width="100%"> <tbody> <asp:Repeater id="NewsRep" runat="server"> <ItemTemplate> <tr> <td><a href="read.aspx?id=<%# DataBinder.Eval(Container.DataItem, "id") %>">Read more</a></td> </tr> </ItemTemplate> </asp:Repeater> </tbody> </table> Еще у тебя в коде ошибка. Не надо в данном случае пользоваться блоком try/catch. Замени catch (Exception ex) на finally и убери строку label1.Text=ex.Message; В случае ошибки ASP.NET выдаст тебе ее полное описание.
|
|
|
|