Deutsch

Воспоминание asp net 12.10.2024

6 дней назад, 22:01
Re: Воспоминание asp net 12.10.2024
 
uscheswoi_82 патриот

Всем привет! Продолжим. Короче в ASP NET WebForms не нужно писать так, как пишут в PHP:

Пример index.php:

<!DOCTYPE html>
<html>
  <head>
    <title>Пример POST</title>
  </head>
  <body>
    <?php if(isset($_POST['firstname']) && isset($_POST['lastname'])): ?>
      <?php if($_POST['firstname'] != '' && $_POST['lastname'] != ''): ?>
        <h1><?=sprintf('Привет %s %s!', $_POST['firstname'], $_POST['lastname']); ?></h1>
      <?php endif ?>
        <h1>Привет незнакомец! Добро пожаловать к нам на сайт!</h1>
    <?php else: ?>
        <h1>Привет незнакомец! Добро пожаловать к нам на сайт!</h1>
    <?php endif ?>
    <form method="post" action="<?=htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
      <label for="firstname">Имя:</label><br>
      <input type="text" name="firstname" id="firstname"><br><br>
      <label for="lastname">Фамилия:</label><br>
      <input type="text" name="lastname" id="lastname"><br><br>
      <input type="submit" value="Погнали!">
    </form>
  </body>
</html>



В ASP NET WebForms нужно напрямую вызывать вот так:

Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>Пример POST</title>
  </head>
  <body>
    <form id="form1" runat="server">
      <div>
        <h1><asp:Label ID="lbHello" runat="server" Text=""></asp:Label></h1>
        <asp:Label ID="lbFirstname" runat="server" Text="Имя:"></asp:Label><br />
        <asp:TextBox ID="txtFirstname" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator
        ID="rfvFirstname" runat="server" 
        ErrorMessage="*" ControlToValidate="txtFirstname" SetFocusOnError="True">
        </asp:RequiredFieldValidator><br /><br />
        <asp:Label ID="lbLastname" runat="server" Text="Фамилия:"></asp:Label><br />
        <asp:TextBox ID="txtLastname" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator
        ID="rfvLastname" runat="server" 
        ErrorMessage="*" ControlToValidate="txtLastname" SetFocusOnError="True">
        </asp:RequiredFieldValidator><br /><br />
        <asp:Button ID="btnGoGo" runat="server" Text="Погнали!" />
      </div>
  </form>
</body>
</html>



Default.aspx.cs:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page {
  private String strHelloAnon = "Привет незнакомец! " +
  "Добро пожаловать к нам на сайт!";
  private String strHelloName = "Привет {0} {1}!";

  protected void Page_Load(object sender, EventArgs e) {
    if(!IsPostBack) lbHello.Text = strHelloAnon;
    else {
      if(txtFirstname.Text.Length > 0 && txtLastname.Text.Length > 0) {
        lbHello.Text = String.Format(strHelloName, txtFirstname.Text, 
        txtLastname.Text);
      }
      else
        lbHello.Text = strHelloAnon;
    }
  }
}



Вуаля! А вот так работает:



Спомощью IsPostBack проверяем первый раз запускается сайт, или нажали на кнопку Submit т.е. на кнопку "Погнали!". Если первый раз запускается сайт / страница, то IsPostBack = false, если не первый раз, т.е. уже нажали на кнопку Submit т.е. на кнопку "Погнали!" то IsPostBack = true.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
 

Перейти на