Отправка данных через QueryString с помощью ASP.NET

Я хочу отправить строку на другую страницу с именем Reply.aspx с помощью QueryString.

Я написал этот код на первой странице, который должен отправить текст в Reply.aspx:

protected void FReplybtn_Click(object sender, EventArgs e)
{
    String s = "Reply.aspx?";
    s += "Subject=" + FSubjectlbl.Text.ToString();
    Response.Redirect(s);
}

Я написал этот код на странице Reply.aspx:

RSubjectlbl.Text += Request.QueryString["Subject"];

Но этот подход работает некорректно и не отображает текст.

Что мне делать, чтобы решить эту проблему?

Спасибо


person mohammad reza    schedule 27.09.2009    source источник
comment
этот код должен работать ... Какая часть идет не так? Правильно ли происходит перенаправление?   -  person ullmark    schedule 27.09.2009
comment
Это что-нибудь показывает? Вы можете htmlencode, чтобы это была действительная строка запроса. Или вы можете кэшировать его в объекте сеанса, если он находится на том же сайте.   -  person Ralf de Kleine    schedule 27.09.2009
comment
страница ответа находится в папке с именем ADMIN   -  person mohammad reza    schedule 27.09.2009
comment
Хорошо, и страница выполняет перенаправление также в этой папке?   -  person ullmark    schedule 27.09.2009
comment
Не знаю, эта страница находится в папке с именем ADMIN, и теперь я меняю код, но пока не работает. Строка s = ~ ADMIN / Reply.aspx ?; s + = Тема = + FSubjectlbl.Text; Response.Redirect (s);   -  person mohammad reza    schedule 27.09.2009
comment
Возможно ли, что FSubjectlbl.Text содержит недопустимые символы (пробелы, амперсанды и т. Д.), Которые необходимо сначала очистить? Пожалуйста, опубликуйте значение s, когда произойдет перенаправление. Спасибо!   -  person Mark Carpenter    schedule 27.09.2009
comment
@ rdkleine - я думаю, вы имеете в виду Server.UrlEncode.   -  person RichardOD    schedule 27.09.2009


Ответы (2)


Хотя ваш код должен работать нормально, даже если в исходной строке есть пробелы и т. Д., Он должен возвращать что-то при доступе к строке запроса, попробуйте также это:

protected void FReplybtn_Click(object sender, EventArgs e)
{
    String s = Page.ResolveClientUrl("~/ADMIN/Reply.aspx");
    s += "?Subject=" + Server.UrlEncode(FSubjectlbl.Text.ToString());
    Response.Redirect(s);
}

РЕДАКТИРОВАТЬ:-

void Page_Load(object sender, EventArgs e)
{
    if(Request.QueryString.HasKeys())
    {
        if(!string.IsNullOrEmpty(Request.QueryString["Subject"]))
        {
            RSubjectlbl.Text += Server.UrlDecode(Request.QueryString["Subject"]);
        }
    }
}

PS: - Server.UrlEncode также предлагается в комментарии к этому вопросу.

person TheVillageIdiot    schedule 27.09.2009

это легко :

Первая страница :

string s = "~/ADMIN/Reply.aspx?";
s += "Subject=" + FSubjectlbl.Text;
Response.Redirect(s);

Вторая страница:

RSubjectlbl.Text = Request.QueryString["Subject"];
person mohammad reza    schedule 27.09.2009