Функция вызова Asp.Net с другой страницы * .aspx.cs - PullRequest
1 голос
/ 02 апреля 2009

Если у меня есть кнопка внутри одной страницы, например "main.aspx". И после нажатия я хочу, чтобы метод clicked в "main.aspx.cs" вызывал функцию с другой страницы * .aspx.cs, а также перенаправлял на эту страницу * .aspx ... это возможно?

Ответы [ 5 ]

6 голосов
/ 02 апреля 2009

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

Вы должны поместить общий код в папку App_Code. Вы также не должны иметь никакой бизнес-логики внутри кода формы.

Тот факт, что вам нужна одна страница для вызова метода на другой странице, указывает на то, что вы этого не сделали. Страницы предназначены для отображения и интерпретации действий, но они не должны содержать какую-либо бизнес-логику.

например. Хромой пример корзины.

    ProductView.aspx - calls Cart.AddToCart(Product p)
    CartView.aspx - displays all items in the cart, and the user
                    can update or remove items.
        - calls Cart.RemoveItem(int cartIndex)
        - calls Cart.UpdateItem(int cartIndex, int newItemCount)

Сама корзина не принадлежит ни CartView.aspx, ни ProductView.aspx. Вместо этого он принадлежит ~/App_Code/Cart.cs

Так что ваше решение может выглядеть примерно так:

/ (root of your web folder)
 Product/
          ProductView.aspx
          ProductView.aspx.cs

 Cart/
          CartView.aspx
          CartView.aspx.cs

 App_Code/
          Cart.cs 
          Product.cs

Кроме того, чтобы добавить папку App_Code, если ее там еще нет, щелкните правой кнопкой мыши веб-проект и выберите Add ASP.NET folder и выберите App_Code

3 голосов
/ 02 апреля 2009

Вам необходимо понять жизненный цикл страницы ASP.NET, и вы поймете, почему это не кошерное. Если вам действительно нужно вызвать метод с нескольких страниц, это звучит как хороший кандидат для какого-то внешнего класса / объекта.

В качестве альтернативы, вместо использования параметра строки запроса, вы можете установить флаг сеанса и затем перенаправить на эту новую страницу. Затем очистите флаг сеанса при вызове метода этой страницы.

1 голос
/ 02 апреля 2009

Очень простым способом, чтобы Main.aspx перейти к Other.aspx и передать небольшое количество данных в строку запроса, чтобы указать действие.

Main.aspx

protected void OnSomeButtonClicked(object sender, EventArgs e)
{
  if( someCondition )
  {
    Response.Redirect("~/Other.aspx?action=runAway");
  }
}

в Other.aspx

protected void Page_Load(object sender, EventArgs e)
{
  if( !IsPostBack )
  {
    if( "runAway".Equals(Request.QueryString["action"] )
    {
      RunAway();
    }
  }
}

Вы также должны прочитать на Server.Transfer vs. Response.Redirect . Какой из них использовать, зависит от ситуации.

Также обратите внимание, что параметры QueryString могут быть легко изменены пользователем, поэтому всегда проверяйте их и никогда не доверяйте пользователю.

0 голосов
/ 02 апреля 2009

Создание объекта из другого класса вашей страницы и вызов метода.

protected Button1_Clicked(Sender s, Eventargs e){
        MyNamespace.Page_Other po = new MyNamespace.Page_Other();
        po.Method1();
        Response.Redirect("~/page_other.aspx");
}
0 голосов
/ 02 апреля 2009

Почему бы вам просто не перенаправить с параметром строки запроса, а затем выполнить функцию на целевой странице?

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