Deutsch

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

1368  1 2 все
uscheswoi_82 коренной житель12.10.24 12:13
12.10.24 12:13 

Всем привет! Сегодня хочу вспомнить ASP.NET 2.0. Но прежде чем вспомнить про ASP.NET хочу написать кое-что не по теме. Короче пока лежал в больнице почти 2 месяца купил такие лего журналы, там был конструктор



А вот видео, про журнал лего:



Ну да ладно, давайте поговорим об ASP.NET 2.0. Примерно в 2006 г. я купил компьютерный журнал в обычном магазине, и там был вот такой диск.






Благодаря этому компакт диску с журналом, я начал изучать программирование на ASP.NET 2.0, VB.NET и C#. Покуда я умел программировать на Си, Си++ и Visual Basic 6.0, я легко перешёл на C# и VB.NET, и быстро освоил ASP.NET 2.0. На диске были обучающие видеоуроки по программированию на ASP.NET 2.0, и среда разработки Microsoft Visual Web Developer 2005 Express. Мы как раз и будем играться на Microsoft Visual Web Developer 2005 Express.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#1 
uscheswoi_82 коренной житель26.11.24 14:51
NEW 26.11.24 14:51 
в ответ uscheswoi_82 12.10.24 12:13

Всем привет!

Хочу продолжить вспоминать. Сегодня я поиграюсь в логин.

1. Запустим MS Web 2005 Express Edition, нажмём на Datei->Neue Website...:


2. Появится диалог Neue Website, нажмём ASP.NET-Website, выберим язык C# (Visual C#):


3. Вот новый проект:

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#2 
uscheswoi_82 коренной житель26.11.24 15:01
NEW 26.11.24 15:01 
в ответ uscheswoi_82 26.11.24 14:51

Теперь дальше. Будем играться в Login.

1. Создастся такой код 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>Unbenannte Seite</title>
</head>
<body>
  <form id="form1" runat="server">
    <div>
    </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 {
  protected void Page_Load(object sender, EventArgs e) {}
}



2. Дальше добавим элемент управления Login:

<asp:Login ID="Login1" runat="server">
</asp:Login>



3. Добавим событие:

<asp:Login ID="Login1" runat="server" OnAuthenticate="Login1_Authenticate">
</asp:Login>


и код:

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) {
}



4.

Теперь подправим:

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) {
  e.Authenticated = false;
}



5. Вуаля, сейчас работает вот так:



Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#3 
uscheswoi_82 коренной житель26.11.24 15:03
NEW 26.11.24 15:03 
в ответ uscheswoi_82 26.11.24 15:01

Вот полный код 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>Unbenannte Seite</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Login ID="Login1" runat="server" OnAuthenticate="Login1_Authenticate">
        </asp:Login>
    </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 {
  protected void Page_Load(object sender, EventArgs e) { }
  protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) {
    e.Authenticated = false;
  }
}
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#4 
uscheswoi_82 коренной житель26.11.24 15:08
NEW 26.11.24 15:08 
в ответ uscheswoi_82 26.11.24 15:03, Последний раз изменено 26.11.24 15:10 (uscheswoi_82)

1. Теперь дальше. Улучшим код. Добавим в код Default.aspx:

Hallo, <asp:LoginName ID="LoginName1" runat="server" />
<asp:Login ID="Login1" runat="server" OnAuthenticate="Login1_Authenticate">
</asp:Login>



И Default.aspx.cs:

protected void Page_Load(object sender, EventArgs e) {
  if(!this.Page.User.Identity.IsAuthenticated)
    FormsAuthentication.RedirectFromLoginPage(Login1.UserName, Login1.RememberMeSet);
  }
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) {
  if(Login1.UserName.Equals("mishka") && Login1.Password.Equals("1234")) 
    e.Authenticated = true;
  else e.Authenticated = false;
}



2. UPDATE! Забыл Добавим в Web.config:

<authentication mode="Forms">
  <forms defaultUrl="Default.aspx" loginUrl="Default.aspx" slidingExpiration="true" timeout="2880"></forms>
</authentication>



2. 3. Вуаля! Давайте введём Username mishka, а пароль 1234:




Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#5 
uscheswoi_82 коренной житель26.11.24 15:13
NEW 26.11.24 15:13 
в ответ uscheswoi_82 26.11.24 15:08

Вот полный код 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>Unbenannte Seite</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        Hallo, <asp:LoginName ID="LoginName1" runat="server" />
        <asp:Login ID="Login1" runat="server" OnAuthenticate="Login1_Authenticate">
        </asp:Login>
    </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 {
  protected void Page_Load(object sender, EventArgs e) {
    if(!this.Page.User.Identity.IsAuthenticated)
      FormsAuthentication.RedirectFromLoginPage(Login1.UserName, Login1.RememberMeSet);
  }

  protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) {
    if(Login1.UserName.Equals("mishka") && Login1.Password.Equals("1234"))
      e.Authenticated = true;
    else e.Authenticated = false;
  }
}
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#6 
uscheswoi_82 коренной житель26.11.24 16:17
NEW 26.11.24 16:17 
в ответ uscheswoi_82 26.11.24 15:13

Вот так выглядела оригинальная коробка, там 2 DVD, на 1-м DVD там программа Microsoft Web 2005 Express Edition, на-2 DVD там бесплатные картинки и фотографии:











Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#7 
uscheswoi_82 коренной житель18.01.25 14:40
NEW 18.01.25 14:40 
в ответ uscheswoi_82 26.11.24 16:17

Всем привет! Давно я неигрался в ASP NET 2.0, сегодня поиграимся дальше. Сейчас пойдёт речь о поключение к базе данных, и отображение данных из таблицы на сайте. База данных будет подключаться сделанная на Microsoft Access. Чтобы отобразить данные в веб браузере делается это очень просто, нужно два компонента - <asp:AccessDataSource ..> для подключение к базе данных, и <asp:GridView ..> - для отображения данных из базы данных.

1. Вот так выглядет наша база данных и таблица Persony, в которых записаны имя и фамилии Вова Пупкин, Маша Пупина, Дима Попкин, Антон Попов:



2. Напишим вот так:

<%@ 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>Чтение из базы данных.</title>
  </head>
  <body>
    <form id="form1" runat="server">
    <div>
    <asp:AccessDataSource ID="accdbPerson" runat="server" DataFile="~/App_Data/db_persony.mdb" SelectCommand="SELECT [PersonID], [Imja], [Familia] FROM [Persony]"></asp:AccessDataSource>
    <asp:GridView ID="GridView1" runat="server" DataSourceID="accdbPerson" AutoGenerateColumns="False" DataKeyNames="PersonID">
      <Columns>
        <asp:BoundField DataField="PersonID" HeaderText="Персона №" />
        <asp:BoundField DataField="Imja" HeaderText="Имя" />
        <asp:BoundField DataField="Familia" HeaderText="Фамилия" />
      </Columns>
    </asp:GridView>
    </div>
  </form>
  </body>
</html>



3. Вуаля! А вот и результат:


Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#8 
uscheswoi_82 коренной житель18.01.25 14:48
NEW 18.01.25 14:48 
в ответ uscheswoi_82 18.01.25 14:40

Но самый простой способ, если вам не нужно отображать заголовки вот так:

<asp:AccessDataSource ID="accdbPerson" runat="server" DataFile="~/App_Data/db_persony.mdb" SelectCommand="SELECT [PersonID], [Imja], [Familia] FROM [Persony]"></asp:AccessDataSource>
<asp:GridView ID="GridView1" runat="server" DataSourceID="accdbPerson" AutoGenerateColumns="False" DataKeyNames="PersonID" />


Но тогда в заголовках будут названия полей, в данном случае латинскими буквами:

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#9 
uscheswoi_82 коренной житель18.01.25 15:31
NEW 18.01.25 15:31 
в ответ uscheswoi_82 18.01.25 14:48

Теперь поиграем в менюшечку. Чтобы сделать менюшечку нужно использовать компонент <asp:Menu ...>.

1. Ориентация у менюшечки должно быть горизонтальным т.е. Orientation="Horizontal" см.:

<asp:Menu ID="Menu1" runat="server" Orientation="Horizontal">



2. Вот так добавляем пункты меню в менюшечку Главная страница и Об нас:




3. Вот код:

<%@ 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>Пример менюшечки</title>
  </head>
  <body>
    <form id="form1" runat="server">
      <div>
        <asp:Menu ID="Menu1" runat="server" Orientation="Horizontal">
          <DataBindings>
            <asp:MenuItemBinding DataMember="item" />
            <asp:MenuItemBinding DataMember="menuitems" />
          </DataBindings>
          <Items>
            <asp:MenuItem Text="Главная страница" Value="Главная страница"></asp:MenuItem>
            <asp:MenuItem Text="Об нас" Value="Об нас"></asp:MenuItem>
          </Items>
        </asp:Menu>
    </form>
  </body>
</html>


4. Вуаля!


Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#10 
uscheswoi_82 коренной житель18.01.25 16:00
NEW 18.01.25 16:00 
в ответ uscheswoi_82 18.01.25 15:31

Теперь давайте поиграемся в темы и скины. В ASP.NET WebForms 2.0 есть темы и скины.

1. Тему выберают спомощью параметра Theme="названия скина" см.:

Тема Winter:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" Theme="Winter" %>


Тема Sommer:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" Theme="Sommer" %>



2. Вот так выглядят подпапки со скинами Winter и Sommer, эти подпапки находятся в папке App_Themes:



3. Вот код:

Winter.skin:

<asp:Label runat="server" BackColor="Darkblue" ForeColor="White" />
<asp:TextBox runat="server" BackColor="White" ForeColor="Darkblue" />
<asp:Button runat="server" BackColor="Darkblue" ForeColor="White" />


Sommer.skin:

<asp:Label runat="server" BackColor="Green" ForeColor="Yellow" />
<asp:TextBox runat="server"  BackColor="Yellow" ForeColor="Green" />
<asp:Button runat="server" BackColor="Green" ForeColor="Yellow" />


Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" Theme="Sommer" %>
<!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>Пример тем и скинов</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Введите ваше имя:"></asp:Label><br />
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br /><br />
        <asp:Label ID="Label2" runat="server" Text="Введите вашу фамилию:"></asp:Label><br />
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <br /><br />
        <asp:Button ID="Button1" runat="server" Text="Далее" />
    </div>
    </form>
</body>
</html>


Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#11 
uscheswoi_82 коренной житель18.01.25 16:12
NEW 18.01.25 16:12 
в ответ uscheswoi_82 18.01.25 16:00

Вуаля! А вот и результат :

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" Theme="Winter" %>




<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" Theme="Sommer" %>

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#12 
uscheswoi_82 коренной житель19.01.25 08:57
NEW 19.01.25 08:57 
в ответ uscheswoi_82 18.01.25 14:48

Всем привет, продолжим болтавню про классический ASP NET WebForms. Как-то я на уроке в колледже вместо того чтобы учиться, учился программированию на ASP NET WebForms. Покуда учителя следили чем мы на уроке занимаемся спомощью Remote Desktop, один из учителей показал всем одноклассникам, что я на уроке играюсь в ASP NET. Вспоминаю мне примерно в 2008 г. подарили веб хостинг на ASP NET 2.0, и поэтому была мотивация изучить ASP NET.


Вот тут см. #9 опечатка там написано так:

<asp:AccessDataSource ID="accdbPerson" runat="server" DataFile="~/App_Data/db_persony.mdb" SelectCommand="SELECT [PersonID], [Imja], [Familia] FROM [Persony]"></asp:AccessDataSource>
<asp:GridView ID="GridView1" runat="server" DataSourceID="accdbPerson" AutoGenerateColumns="False" DataKeyNames="PersonID" />



а нужно вот так:

<asp:AccessDataSource ID="accdbPerson" runat="server" DataFile="~/App_Data/db_persony.mdb" SelectCommand="SELECT [PersonID], [Imja], [Familia] FROM [Persony]"></asp:AccessDataSource>
<asp:GridView ID="GridView1" runat="server" DataSourceID="accdbPerson" AutoGenerateColumns="True" DataKeyNames="PersonID" />


Т.е. нужно чтобы было AutoGenerateColumns="True".

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#13 
uscheswoi_82 коренной житель19.01.25 09:05
NEW 19.01.25 09:05 
в ответ uscheswoi_82 19.01.25 08:57

Итак в ASP NET 2.0 WebForms очень много компонентов, и можно самому сделать свой компонент. Сегодня поговорим о календареке.

1. Вот код Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" UICulture="ru-ru" Culture="ru-ru" %>
<!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>Календарик</title>
  </head>
  <body>
    <form id="form1" runat="server">
      <div>
        <asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="Calendar1_SelectionChanged" 
         OnDayRender="Calendar1_DayRender"></asp:Calendar>
        <br />
        <asp:Label ID="Label1" runat="server" Text="Label" ForeColor="Red">
        </asp:Label>
      </div>
    </form>
  </body>
</html>



2. Вот код Default.aspx.cs:

using System;
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 {
  protected void Page_Load(object sender, EventArgs e) {
    Label1.Text = "";
  }

  protected void Calendar1_SelectionChanged(object sender, EventArgs e) {
    if (Calendar1.SelectedDate.Year == 2025 && Calendar1.SelectedDate.Month == 1 && Calendar1.SelectedDate.Day == 1)
      Label1.Text = "С НОВЫМ 2025 ГОДОМ!";
    else if(Calendar1.SelectedDate.Year == 2024 && Calendar1.SelectedDate.Month == 12 && Calendar1.SelectedDate.Day >= 24 && 
         Calendar1.SelectedDate.Day <= 25)
      Label1.Text = "С РОЖДЕСТВОМ!";
    else if (Calendar1.SelectedDate.Year == 2024 && Calendar1.SelectedDate.Month == 12 && Calendar1.SelectedDate.Day >= 26 && 
         Calendar1.SelectedDate.Day <= 31)
      Label1.Text = "С НАСТУПАЮЩИМ 2025 ГОДОМ!";
    else
      Label1.Text = "";
  }

  protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) {
  if(e.Day.Date.Month == 12 && e.Day.Date.Year == 2024 && e.Day.Date.Day >= 24 
    && e.Day.Date.Day <= 25) e.Cell.ForeColor = System.Drawing.Color.Red;
  if(e.Day.Date.Day >= 31 && e.Day.Date.Month == 12 
    && e.Day.Date.Year == 2024) e.Cell.ForeColor = System.Drawing.Color.Red;
  if(e.Day.Date.Month == 1 && e.Day.Date.Year == 2025 && e.Day.Date.Day == 1) 
    e.Cell.ForeColor = System.Drawing.Color.Red;
  }
}


Через пару минут дальше продолжу.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#14 
uscheswoi_82 коренной житель19.01.25 11:12
NEW 19.01.25 11:12 
в ответ uscheswoi_82 19.01.25 09:05

3. Вуаля! А вот так наш календарек работает:


Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#15 
uscheswoi_82 коренной житель19.01.25 15:59
NEW 19.01.25 15:59 
в ответ uscheswoi_82 19.01.25 11:12

Теперь хочу поиграться в валидаторы, вспомнить их.

1. Вот есть такой код:

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>Пример требовыемые поля</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <div id="frmField" runat="server">
        <asp:Label ID="lbLastname" runat="server" Text="Фамилия:"></asp:Label><asp:RequiredFieldValidator
            ID="rqfvLastname" runat="server" ErrorMessage="Введите вашу фамилию" 
            ControlToValidate="txtLastname" SetFocusOnError="True"></asp:RequiredFieldValidator><br />
        <asp:TextBox ID="txtLastname" runat="server"></asp:TextBox>
        <br /><br />
        <asp:Label ID="lbFirstname" runat="server" Text="Имя:"></asp:Label>
        <asp:RequiredFieldValidator
            ID="rqfvFirstname" runat="server" ErrorMessage="Введите ваше имя" 
            ControlToValidate="txtFirstname" SetFocusOnError="True"></asp:RequiredFieldValidator><br />
        <asp:TextBox ID="txtFirstname" runat="server"></asp:TextBox>
        <br /><br />
        <asp:Label ID="lbBirthday" runat="server" Text="Дата рождения:"></asp:Label> 
        <asp:RequiredFieldValidator ID="rqfvBirthday" runat="server" ControlToValidate="txtBirthday"
            ErrorMessage="Введите вашу дату рождения" SetFocusOnError="True"></asp:RequiredFieldValidator><br />
        <asp:TextBox ID="txtBirthday" runat="server"></asp:TextBox>
        <br />
        <br />
        <br />
        <br />
        <asp:Button ID="btnSave" runat="server" Text="Сохранить" OnClick="btnSave_Click" />
        </div>
        <div id="frmResult" runat="server">
        </div>
    </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 {
    protected void Page_Load(object sender, EventArgs e) {
        this.frmField.Visible = true;
        this.frmResult.Visible = false;
    }

    protected void btnSave_Click(object sender, EventArgs e) {
        this.frmField.Visible = false;
        this.frmResult.Visible = true;
        Label l = new Label();
        l.Text = "Здравствуйте " + this.txtFirstname.Text + " " + this.txtLastname.Text + ", Вы родились " + this.txtBirthday.Text + ". Всё успешно сохранино!";
        l.Font.Bold = true;
        this.frmResult.Controls.Add(l);
    }
}


2. Вуаля! А вот и результат:




За это я обожаю ASP NET WebForms!

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#16 
uscheswoi_82 коренной житель21.01.25 02:03
NEW 21.01.25 02:03 
в ответ uscheswoi_82 19.01.25 15:59

Всем привет! Продолжим играться в ASP NET 2.0 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>Пример работы с БД</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/db_persony.mdb" 
         InsertCommand="INSERT INTO Persony(Imja, Familia) VALUES (?,?)" SelectCommand="SELECT [PersonID], [Imja], [Familia] FROM [Persony]">
            <InsertParameters>
                <asp:ControlParameter ControlID="txtFirstname" DbType="String" Name="newparameter"
                    PropertyName="Text" />
                <asp:ControlParameter ControlID="txtLastname" DbType="String" Name="newparameter"
                    PropertyName="Text" />
            </InsertParameters>
        </asp:AccessDataSource>
        <asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/App_Data/db_persony.mdb"
            SelectCommand="SELECT [PersonID], [Imja] + ' ' + [Familia] AS [Imja_Familia] FROM [Persony]"></asp:AccessDataSource>
        Люди:<br />
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="PersonID"
            DataSourceID="AccessDataSource1">
            <Columns>
                <asp:BoundField DataField="PersonID" HeaderText="PersonID" InsertVisible="False"
                    ReadOnly="True" SortExpression="PersonID" />
                <asp:BoundField DataField="Imja" HeaderText="Имя" SortExpression="Imja" />
                <asp:BoundField DataField="Familia" HeaderText="Фамилия" SortExpression="Familia" />
            </Columns>
        </asp:GridView>
        <br />
        Люди:<br />
        <asp:DropDownList ID="cboPerson" runat="server" DataSourceID="AccessDataSource2" DataTextField="Imja_Familia" DataValueField="PersonID">
        </asp:DropDownList><br />
        <br />
        <asp:Label ID="lbFirstname" runat="server" Text="Ваше имя:"></asp:Label>
        <asp:RequiredFieldValidator ID="reqfvFirstname" runat="server" ControlToValidate="txtFirstname"
            ErrorMessage="Введите ваше имя"></asp:RequiredFieldValidator><br />
        <asp:TextBox ID="txtFirstname" runat="server"></asp:TextBox><br />
        <br />
        <asp:Label ID="lbLastname" runat="server" Text="Ваша фамилия:"></asp:Label>
        <asp:RequiredFieldValidator ID="reqfvLastname" runat="server" ControlToValidate="txtLastname"
            ErrorMessage="Введите вашу фамилию"></asp:RequiredFieldValidator><br />
        <asp:TextBox ID="txtLastname" runat="server"></asp:TextBox><br />
        <br />
        <asp:Button ID="btnSave" runat="server" Text="Сохранить" OnClick="btnSave_Click" /><br />
    </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 {
  protected void Page_Load(object sender, EventArgs e) {}
  protected void btnSave_Click(object sender, EventArgs e) {
    AccessDataSource1.Insert();
  }
}

Вуаля! А вот так работает наша программа:



Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#17 
uscheswoi_82 коренной житель21.01.25 15:16
NEW 21.01.25 15:16 
в ответ uscheswoi_82 21.01.25 02:03

Всем привет!

Я оптимизировал код см. 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>Пример работы с БД</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/db_persony.mdb" 
          InsertCommand="INSERT INTO Persony(Imja, Familia) VALUES (?,?)" 
          SelectCommand="SELECT [PersonID], [Imja], [Familia], [Imja] + ' ' + [Familia] AS [Imja_Familia] FROM [Persony]">
            <InsertParameters>
                <asp:ControlParameter ControlID="txtFirstname" DbType="String" Name="newparameter"
                    PropertyName="Text" />
                <asp:ControlParameter ControlID="txtLastname" DbType="String" Name="newparameter"
                    PropertyName="Text" />
            </InsertParameters>
        </asp:AccessDataSource>
         
        Люди:<br />
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="PersonID"
            DataSourceID="AccessDataSource1">
            <Columns>
                <asp:BoundField DataField="PersonID" HeaderText="#" InsertVisible="False"
                    ReadOnly="True" SortExpression="PersonID" />
                <asp:BoundField DataField="Imja" HeaderText="Имя" SortExpression="Imja" />
                <asp:BoundField DataField="Familia" HeaderText="Фамилия" SortExpression="Familia" />
            </Columns>
        </asp:GridView>
        <br />
        Люди:<br />
        <asp:DropDownList ID="cboPerson" runat="server" DataSourceID="AccessDataSource1" DataTextField="Imja_Familia" 
         DataValueField="PersonID">
        </asp:DropDownList><br />
        <br />
        <asp:Label ID="lbFirstname" runat="server" Text="Ваше имя:"></asp:Label>
        <asp:RequiredFieldValidator ID="reqfvFirstname" runat="server" ControlToValidate="txtFirstname"
            ErrorMessage="Введите ваше имя" SetFocusOnError="True"></asp:RequiredFieldValidator><br />
        <asp:TextBox ID="txtFirstname" runat="server"></asp:TextBox><br />
        <br />
        <asp:Label ID="lbLastname" runat="server" Text="Ваша фамилия:"></asp:Label>
        <asp:RequiredFieldValidator ID="reqfvLastname" runat="server" ControlToValidate="txtLastname"
            ErrorMessage="Введите вашу фамилию" SetFocusOnError="True"></asp:RequiredFieldValidator><br />
        <asp:TextBox ID="txtLastname" runat="server"></asp:TextBox><br />
        <br />
        <asp:Button ID="btnSave" runat="server" Text="Сохранить" OnClick="btnSave_Click" /><br />
    </div>
    </form>
</body>
</html>
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#18 
uscheswoi_82 коренной житель21.01.25 15:23
NEW 21.01.25 15:23 
в ответ uscheswoi_82 21.01.25 15:16

Я оптимизировал и улучшил код.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#19 
uscheswoi_82 коренной житель21.01.25 15:55
NEW 21.01.25 15:55 
в ответ uscheswoi_82 21.01.25 15:23

Теперь хочу вспомнить как создавали компоненты В ASP.NET WebForms можно создавать свои веб-компоненты. Мы будем делать кнопочку. В старых версиях HTML делали так кнопочки:

<input type="button" value="Кнопочка" />


или так:

<input type="submit" value="Кнопочка" />


А в современном HTML вот так:

<button>Кнопочка</button>


Чтобы добавить компонент, нужно следующее сделать.

1. Нажмём Website->Neues Element hinzufügen...:



2. Теперь появится диалоговое окно Neues Element hinzufügen: 1. выберем Web-Benutzersteuerelement, 2. назовём элемент ctlButton.ascx, 3. поставим галочку Code in eigener Datei platzieren:



3. Вот код ctlButton.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ctlButton.ascx.cs" Inherits="ctlButton" %>
<button id="btn" runat="server"></button>



4. Вот код ctlButton.ascx.cs:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
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 ctlButton : System.Web.UI.UserControl {
  protected String _Text;
  public String Text { 
    get { return _Text; } 
    set { _Text = value; } 
  }
  protected void Page_Load(object sender, EventArgs e) {
    if(this._Text != null) this.btn.InnerHtml = this._Text;
  }
}



5. Вот код Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" 
Inherits="_Default" %>
<%@ Register Src="~/ctlButton.ascx" TagName="Button" TagPrefix="cust" %>
<!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>Элемент управления кнопочка</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <cust:Button id="btn1" runat="server" 
         Text="Наша кнопочка!"></cust:Button>
    </div>
    </form>
</body>
</html>



6. Вот код 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 {
  protected void Page_Load(object sender, EventArgs e){}
}



7. Вуаля! А вот и результат, это наша кнопочка:

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#20 
uscheswoi_82 коренной житель21.01.25 16:39
NEW 21.01.25 16:39 
в ответ uscheswoi_82 21.01.25 15:55

Теперь поговорим о веб сайтах для мобильных устройств. Прежде чем понять о чём идёт речь нужно взглянуть сюда:

WAP, рингтоны воспоминания 28.10.2024

Воспоминание Embedded ч2 27.11.2024

Воспоминания Embedded ч6 15.12.2024


Короче раньше сначало был WAP а потом когда появился Mobile Internet Explorer и iPhone люди могли выходить в интернет. Я лазил через WAP до 2010 г. Вот такие мобильные устройства могли выходить в интернет:














Буду тестировать спомощью этой программой:









Итак погнали.

1. Нужно добавить Mobiles Web Form, и назавём Default.aspx:




2. На выбор тут небольшой список готовых компонентов, мы будем пока пользоваться компонентом Label:




3. Выберем Label, т.е. напишем что-то типа такого Default.aspx:

<%@ Page Language="C#" Inherits="System.Web.UI.MobileControls.MobilePage" %>
<%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" 
Assembly="System.Web.Mobile" %>
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
  <mobile:form id="form1" runat="server">
    <mobile:Label ID="lbHelloWorld" Runat="server">Privet mobilka</mobile:Label>
  </mobile:form>
</body>
</html>


4. Запустим в WAP-эмуляторе я выбрал Nokia 7110:


5. Вуаля! Видим надпись "Privet mobilka":


Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#21 
uscheswoi_82 коренной житель21.01.25 19:51
NEW 21.01.25 19:51 
в ответ uscheswoi_82 21.01.25 16:39, Последний раз изменено 21.01.25 19:55 (uscheswoi_82)

Выше всё вспоминал в халявной версии Microsoft Visual Studio 2005 Web Express Edition. На этом вся халява заканчивается. Для следующих воспоминаний нужна будет Visual Studio 2005:

Это коробка



А это DVD диски:




Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#22 
uscheswoi_82 коренной житель22.01.25 16:30
NEW 22.01.25 16:30 
в ответ uscheswoi_82 21.01.25 19:51

Сейчас я вспомню как я делал воденые знаки в ASP NET 2.0.

Вот есть такая фотка, это моя фотка 2004-2005 гг., я автор фотки, и снимал на мой цифровой фотоаппарат Polaroid PDC3070:




А нужно отобразить картинку и водяные знаки с подписью "(c) uscheswo_82 2004", раз это 2004 год, то пусть и copyright 2004 г. т.е. "(c) uscheswo_82 2004":



1. Чтобы отобразить будем использовать Microsoft Visual Studio 2005. Нажмём Datei->Neu->Website...:



2. Появится диалоговое окно Neue Website, выберем ASP.NET-Website, пусть называется проект WebSite14:



3. Теперь добавим пустую папку:




4. Назовём папку images:



5. Теперь добавим Website->Neues Element hinzufügen, появится диалоговое окно Neues Element hinzufügen, 1)Выберем Web Form, 2)назовём imageview.aspx, т.е. Name:imageview.aspx, 3)уберём галочку Code in eigener Datei platzieren:




6. Вот код:

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>Пример обработки фотографии</title>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <asp:Label ID="Label1" runat="server" Text="Пример картинки:" Font-Bold="True">
    </asp:Label>
    <br />
    <asp:Image ID="Image1" runat="server" ImageUrl="~/imagview.aspx" />
  </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 {
  protected void Page_Load(object sender, EventArgs e) {}
}



imageview.aspx:

<%@ Page Language="C#" ContentType="image/jpeg" %>
<%@ Import Namespace="System.Drawing" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Drawing.Drawing2D" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  protected void Page_Load(object sender, EventArgs e) {
    Bitmap bmp = new Bitmap(640, 480);
    Graphics g = Graphics.FromImage(bmp);
    Response.Clear();     
    g.DrawImage(System.Drawing.Image.FromFile(Server.MapPath("~/images/DSCI3746.jpg")), 0,0);
    g.DrawString("(c) uscheswoi_82 2004", 
                 new Font("Courier New", 16, FontStyle.Bold), 
                 new SolidBrush(Color.FromArgb(90, 255, 255, 255)), 
                 new PointF(360, 450));
    bmp.Save(Response.OutputStream, ImageFormat.Jpeg);
  }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
  <title>Unbenannte Seite</title>
</head>
<body>
  <form id="form1" runat="server">
  <div></div>
  </form>
</body>
</html>



7. Вуаля!


Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#23 
uscheswoi_82 коренной житель22.01.25 16:33
NEW 22.01.25 16:33 
в ответ uscheswoi_82 22.01.25 16:30

Полупрозрачность, т.е. полупрозрачные водяные знаки с подписью "(c) uscheswo_82 2004" благодаря статическому методу, первый параметр это альфа канал т.е. прозрачность, вроде бы имхо от 0 до 100, у меня 90 установлено:

Color.FromArgb(90, 255, 255, 255)

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#24 
uscheswoi_82 патриот22.01.25 21:58
NEW 22.01.25 21:58 
в ответ uscheswoi_82 22.01.25 16:33

Про халявную версию тут писали см. https://ru.wikipedia.org/wiki/Microsoft_Visual_Studio_Express#Visual_Web_Developer_Express

Microsoft Visual Studio Express — линейка бесплатных интегрированных сред разработки, облегчённая версия Microsoft Visual Studio, разработанной компанией Microsoft, инструмент создания Web-приложений, сайтов, различных веб-сервисов на основе технологии ASP.NET[1]. Согласно утверждению Microsoft, «Express»-редакции предлагают отлаженную, простую в обучении и использовании среду разработки пользователям, не являющимся профессиональными разработчиками ПО, — любителям и студентам.

Visual Web Developer Express является бесплатным инструментом веб-разработки, что позволяет разработчикам использовать продукт для оценки процесса создания и редактирования веб возможностей других Visual Studio 2008 изданий на безвозмездной основе. Её основная функция заключается в создании ASP.NET веб-сайтов. Она имеет интерфейс WYSIWYG, drag-and-drop дизайнер интерфейса пользователя; редакторы расширенного HTML и кода; (ограниченный) проводник баз данных; поддержку других веб-технологий (например, CSS, JavaScript, XML), а также комплексную проверку во время разработки, в том числе и по стандартам XHTML 1.0/1.1 и CSS 2.1.

В VS2005 не хватает некоторых функций, таких как проверка доступности, возможность создать автономную библиотеку классов проекта (которая может быть сделана другим языком конкретного издания Express); расширения поддержки, необходимые для загрузки сторонней надстройки, макросы и некоторые другие функции.

VS2008 Web Developer Express SP1 поддерживает проекты как библиотек классов, так и веб-приложений, которые не поддерживаются в VS2005 Express. Она также включает новый встроенный конструктор HTML на основе Microsoft Expression Web.


а так-же см. https://studfile.net/preview/9209879/page:2/

Visual Studio 2005 Express Edition Новые версии Express предоставляют уникальную возможность обучения разработке программного обеспечения или Web-страниц. Эти продукты предназначены для начинающих пользователей, студентов и для представителей малого бизнеса. Они содержат более доступные и сжатые версии основных продуктов Visual Studio и отличаются от полных комплектов продуктов.

Каждая Express-редакция включает набор учебников, документацию для начинающих и ссылки на общедоступные ресурсы, вроде тематических конференций и форумов. Во время установки можно по выбору загрузить и установить MSDN 2005 Express Edition Library, которая включает полный набор документации по каждому продукту серии Express. Она предназначается в основном для обучения разработчиков, это не совсем традиционная документация MSDN Library. Часть этой документации даже ссылается на видеоматериалы и презентации на сайте MSDN, что весьма ценно.

А какие же ограничения существуют для Express версий? Нет доступа к удаленным данным; эти версии используют только локально установленный источник данных (включая бесплатный продукт SQL Server 2005 Express Edition). Разрабатывать приложения для мобильных устройств в VB Express, Visual C# Express или Visual C++ Express нельзя; необходимо будет обновить их до Visual Studio 2005 Standard Edition, чтобы получить такие возможности. Конечно, отсутствуют все профессиональные возможности версий Visual Studio Team System (см. ниже), например, моделирование приложений и кодов, проверка модулей, статический анализ кода и т.д.
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#25 
uscheswoi_82 патриот6 дней назад, 01:45
NEW 6 дней назад, 01:45 
в ответ uscheswoi_82 22.01.25 21:58

Всем привет. Теперь вспомним про сессии. В PHP нужно так делать:

session_start();
$_SESSION['var'] = 3; // Чтобы записать
echo $_SESSION['var']; // Чтобы прочитать



В ASP NET 2.0 WebForms вот так, спомощью статического класса:

using System;

public static class MySession {
    public static int var;
}

MySession.var = 3; // Чтобы записать
Response.Write(MySession.var.ToString()); // Чтобы прочитать



Или вот так, спомощью сессии:

Session["var"] = 3; // Чтобы записать
Response.Write(Session["var"].ToString()); // Чтобы прочитать
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#26 
uscheswoi_82 патриот4 дня назад, 00:04
NEW 4 дня назад, 00:04 
в ответ uscheswoi_82 6 дней назад, 01:45

Продолжим воспоминания. Сначало продолжу про сессию, а поотом про куки.

Так-же можно так добавить сессию:

Session.Add("var", 3); // Это тоже самое что и Session["var"] = 3;
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#27 
uscheswoi_82 патриот4 дня назад, 00:18
NEW 4 дня назад, 00:18 
в ответ uscheswoi_82 4 дня назад, 00:04

Куки хранятся в веб-браузере. Чтобы установит куки, можно 3-мя способами:

Так:

Response.AppendCookie(new HttpCookie("var", "3"));


Так:

Response.Cookies.Add(new HttpCookie("var", "3"));


Или так:

Response.Cookies["var"].Value = "3";



Но чтобы прочитать записанный куки, можно вот так написать:

Response.Write(Response.Cookies["var"].ToString()); // Выводит 3


Или вот так:

Response.Write(Response.Cookies.Get("var").Value.ToString()); // Выводит 3
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#28 
uscheswoi_82 патриот4 дня назад, 00:21
NEW 4 дня назад, 00:21 
в ответ uscheswoi_82 4 дня назад, 00:18

Чтобы установить время истекания куки, нужно написать следующее:

Истекает куки для параметра/переменной var, через 30 минут:

Response.Cookies["var"].Expires = DateTime.Now.AddMinutes(30);



Истекает куки для параметра/переменной var, через 2 часа:

Response.Cookies["var"].Expires = DateTime.Now.AddHours(2);



Истекает куки для параметра/переменной var, через 1 день:

Response.Cookies["var"].Expires = DateTime.Now.AddDays(1);
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#29 
1 2 все