2009-08-07 2 views
3

Я начинаю изучать ASP.NET с C# в качестве языка программирования.server.Transfer with query string

В настоящее время я работаю с HTTPSERVERUTILITY.

Я создал веб-форму с именем, как Default.aspx и Default2.aspx:

я написал следующее кодирование:

Default.aspx:

В представлении источника

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> 

</div> 
</form> 

В файл кода:

защищен недействительным Button1_Click (объект отправителя, EventArgs е) {

Server.Transfer("Default2.aspx ? name =roseline & password = [email protected]"); 
} 

Coding для Default2.aspx:

В представлении:






В файл кода:

public string n, p; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    n = Request.QueryString["name"]; 
    p = Request.QueryString["password"]; 

} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    TextBox1.Text = n; 
    TextBox2.Text = p; 
} 

Когда я исполняю выше приложения Я не получаю какие-либо ошибки.

Когда я нажимаю кнопку Button1 в Default.aspx, он показывает мне Default2.aspx, но когда я нажимаю на кнопку, я не получаю значения в TextBox, текстовые поля пусты без каких-либо значений.

Может ли кто-нибудь сказать мне, что не так с моей кодировкой? Почему он не отображает значения в текстовых блоках?

Пожалуйста, помогите мне!

Заранее благодарен!

ответ

7

Вы не можете добавить строку запроса в Server.Transfer.

Вы можете передать значения в контексте

Eg:

Context.Items["ParamName"] = value; 

Вы можете получить разницу между Server.Transfer и реагирования.Перенаправление от here

+0

Я после книги в том, что я имею такое же кодирование, но даже тогда он не выполняет нужную задачу. В этой книге метод Server.Transfer используется только для querystring. – Sheetal

2

Try используя

Response.Redirect("default.aspx?name =roseline&[email protected]"); 

вместо этого. Дополнительную информацию о различиях между Response.Redirect и Server.Transfer см. На странице this.

EDIT: Ответил немного на быстрый ответ Response.Redirect не использовал класс HttpServerUtility. Однако я бы сказал, что использование Response.Redirect - это нормальный способ обойти это.

0

Использование Response.Redirect вместо:

Response.Redirect("Default2.aspx?name=roseline&[email protected]"); 

Однако, тогда ваши ценности будут отображаться в URL, и что не может быть практичным. Существует множество других способов передачи значений между запросами страниц, у всех есть свои плюсы и минусы.

1

Source.aspx

protected void Button1_Click(object sender, EventArgs e) 
    { 
     HttpContext _context = HttpContext.Current; 
     _context.Items.Add("name", roseline); 
     _context.Items.Add("password", [email protected]); 
     Server.Transfer("Destination.aspx"); 
    } 

Destination.aspx

protected void Page_Load(object sender, EventArgs e) 
    { 
     HttpContext _context = HttpContext.Current; 
     Response.Write(_context.Items["name"]); 
     Response.Write(_context.Items["password"]); 
    } 
1

Вы можете использовать этот способ.

string url = $"~/Registration.aspx?price={price}&membershipId={membershipId}"; 
Server.Transfer(url); 

И читать значения просто нужно использовать:

string membershipId = Request.QueryString["membershipId"];