Файл: "Порядок работы ASP.Net web-приложения.".pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 327

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

+ this.x + "px; top:" + this.y + "px;' src=../Images/Misc/" + this.url + " id=c" + ++count + " alt='" + this.name + "' />");

this.img = document.body.lastChild;

}

}

function Init()

{

tsh = new tshirt(tshirts[1].name, tshirts[1].url);

tsh.Draw();

cr = new crate;

cr.Draw();

var xPos = 20, yPos = 410,

width = document.body.clientWidth,

height = document.body.clientHeght,

bNewLine = false;

Image.prototype.price = 0;

for (var i = 0; i < names.length; i++)

{

var g = names[i];

if (xPos > width - 120)

{

xPos = 20;

yPos += 160;

}

test = new product(g, 100 + i * 10, images[i], xPos, yPos);

products[g] = test;

products[g].Draw();

xPos += 120;

}

for (e in products)

{

if (products.hasOwnProperty(e))

size++;

};

}

function Remove()

{

var o = event.srcElement;

if (o.parentNode.tagName != "TD")

return true;

var row = o.parentNode.parentNode;

var total = document.getElementById("itog");

total.innerText = parseInt(total.innerText) - parseInt(row.cells[2].innerHTML);

row.removeNode(true);

return false;

}

function buy()

{

var

tbl = document.getElementById("buying"),

row = tbl.insertRow();

var price = 0, name;

for (var n = 0; n < size; n++)

{

var thisprod = products[names[n]];

if (thisprod.inrect)

{

price += thisprod.price;

name = thisprod.name;

}

}

boughtItems += 1;

var cell = row.insertCell();

cell.innerHTML = boughtItems;

cell = row.insertCell();

cell.innerHTML = name;

cell = row.insertCell();

cell.innerHTML = price + "$";

var total = document.getElementById("itog");

var itog = total.innerText;

total.innerText = parseInt(itog) + price;

cell = row.insertCell();

cell.innerHTML = '<input type="submit" value="X" onclick="Remove()"/>';

}

</script>

</head>

<body onload="Init()">

<div>

<h3>Покупаем футболку!</h3>&nbsp;&nbsp;&nbsp;

<span id="spanPos"></span><br />

<input type="submit" value="Купить" style="position: absolute; top:250px; left:490px; height:70px; width:100px;" onclick="buy()"/>

<div id="divCrate" style="position: absolute; top:310px; left:910px; padding:5px;

border-color:Red; border-style:groove; border-width:medium;">

<table id="buying">

<tr><th>#</th><th>Наименование</th><th>Цена</th><th>Удалить</th></tr>

</table>

Итого:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span id="itog">0</span>

</div><br />

</div>

</body></html>

Результат представлен на рисунке:

Пример интернет-магазина на ASP.Net.

2. Порядок работы ASP.Net web-приложения

Разработка программы состоит из 2-х частей:

- Клиентская часть

- Серверная часть

Разрабатываемый программный комплекс непосредственно выполнен в виде Web-сайта. Поэтому для доступа к системе, клиенту достаточно обычного браузера. В данном разделе будет описан процесс, создания страниц, дизайна этих страниц, а так же отчетов. На стороне клиента формируются только управляющие команды, в то время как обработка данных ведется целиком на стороне сервера. [17] Серверная часть содержит код, который связывается с базой данных MS SQL Server и передает данные в клиентскую часть программы для их обработки в привычном, для пользователя, виде.


2.1 Особенности создания страниц на языке APS.NET

Любая страница непосредственно состоит из двух частей. Первая часть – Design, представляет собой пустое пространство, на котором можно разместить элементы управления. Вторая часть – Source, представляет собой код языка ASP.NET. Добавление нового кода, происходит при добавлении нового объекта в окне Design, либо при ручном заполнении. Для того чтобы добавить новый элемент в окно Design, его необходимо выбрать из вкладки Toolbox, и перетащить на форму. [5]По аналогии с C#, имеется окно Properties, в котором можно задать те или иные параметры для элементов управления, или задать те или иные события.

Каждая страница непосредственно начинается со следующего кода: « <% Page Language=”текущий язык программирования” %> ». Где тег “<%” всегда предназначен для интерпретации ASP – кода. Атрибут Language – это указание, что в скриптах данной страницы будет использоваться определенный язык программирования. В данной работе – это язык C#. Затем идет код вида: « <form runat=”server”> ». Этот тег дает указание компилятору обрабатывать элементы управления страницы. Данный тег имеет свойство runat, для которого установлено значение “server” (других значений не бывает). При использовании этого свойства элемент управления обрабатывается компилятором, а не передается браузеру «как есть». [3]

При двойном щелчке на объекте в окне Design непосредственно откроется файл, с названием аналогичным названию страницы, но отличающийся от нее тем, что добавляется выражение типа «.cs» в конце расширения файла. Также появится код, который соответствует событию по умолчанию для данного элемента. В данном файле ведется разработка кода уже не на языке ASP.NET, а на том языке, который вы выбрали, для данной работы – это язык C#. Задание и обращение к свойствам, методам ничем не отличается от обращения к ним же при написании любой другой программы на конкретно выбранном языке. [7]

2.2 Создание серверной части

Подключение баз данных к проекту ASP.NET непосредственно осуществлялось по технологии ADO.NET.

ADO.NET (ActiveX Data Object.NET) – набор классов, используемый для доступа к источникам данных в платформе .NET. Название ADO.NET означает, что данный набор классов – это логическое развитие предыдущей объектной модели доступа к данным – ADO. [9]


Но ADO.NET не просто следующая версия ADO. ADO.NET представляет собой новую объектную модель, которая использует стандарт XML для передачи данных. [10]

ADO.Net развивает идею использования отсоединенных массивов данных, непосредственно переводя ее из разряда дополнительных возможностей в разряд реально используемых, более того – основных способов работы. По сравнению с ADO, ADO.NET обещает более легкое программирование, лучшую производительность и масштабирование, меньшую зависимость от особенностей источников данных и большую способность взаимодействовать с другими платформами.

Ключевой объект, который хранит данные в ADO.NET – DataSet. Это экземпляр CLR-класса System.Data.DataSet, представляющий моментальный снимок части базы данных, размещенный в памяти.

DataSet – независимый от источника данных объект, который не имеет собственных средств для работы с источниками данных.

Связующую роль между DataSet и источником данных в ADO.NET выполняют управляемые провайдеры. [11]

Каждый управляемый провайдер представляет набор объектов, с помощью которых можно подключиться к источнику данных, считать данные и заполнить ими DataSet.

Это позволяет DataSet не знать ничего про соединения с источниками данных. В данном случае провайдером является Microsoft SQL Server 2008 R2.

Так как ADO.NET использует XML как стандартный формат передачи данных, программа, которой необходимо получить данные из компонента ADO.NET, не обязана сама быть компонентом ADO.NET.

Единственное требование – эта программа непосредственно должна понимать XML.

И это позволяет ADO.NET-компонентам при использовании других компонентов и сервисов, входящих в ASP.NET и язык высокого уровня C#, легко взаимодействовать с любой программой на любой платформе. [13]

Как уже было сказано выше все запросы непосредственно создаются через DataSet. Преимущество создания таких запросов в том, что Visual Studio предоставляет удобный конструктор запросов любой сложности; Запросы с дополнительными данными являются параметризированными, что дает дополнительный уровень защиты; [14]

Листинг 1 – Добавление, удаление и редактирование данных в таблице «Предприятия»:

<%@ Page Title="Домашняя страница" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"

CodeFile="Default.aspx.cs" Inherits="_Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

<style type="text/css">

.style1

{

text-align: center;

font-size: x-large;

color: #000000;

}

</style>

</asp:Content>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

<h2>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

ConnectionString="<%$ ConnectionStrings:CatalogueConnectionString %>"


SelectCommand="SELECT * FROM [Firms]"

DeleteCommand="DELETE FROM [Firms] WHERE [FirmID] = @FirmID"

InsertCommand="INSERT INTO [Firms] ([Name], [Address], [Phone], [HTTP]) VALUES (@Name, @Address, @Phone, @HTTP)"

UpdateCommand="UPDATE [Firms] SET [Name] = @Name, [Address] = @Address, [Phone] = @Phone, [HTTP] = @HTTP WHERE [FirmID] = @FirmID">

<DeleteParameters>

<asp:Parameter Name="FirmID" Type="Int32" />

</DeleteParameters>

<InsertParameters>

<asp:Parameter Name="Name" Type="String" />

<asp:Parameter Name="Address" Type="String" />

<asp:Parameter Name="Phone" Type="String" />

<asp:Parameter Name="HTTP" Type="String" />

</InsertParameters>

<UpdateParameters>

<asp:Parameter Name="Name" Type="String" />

<asp:Parameter Name="Address" Type="String" />

<asp:Parameter Name="Phone" Type="String" />

<asp:Parameter Name="HTTP" Type="String" />

<asp:Parameter Name="FirmID" Type="Int32" />

</UpdateParameters>

</asp:SqlDataSource>

</h2>

<p class="style1">

<strong>Предприятия</strong></p>

<asp:GridView ID="GridView1" runat="server" AllowPaging="True"

AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="FirmID"

DataSourceID="SqlDataSource1" style="margin-left: 15px" Width="890px"

CellPadding="4" ForeColor="#333333" GridLines="None">

<AlternatingRowStyle BackColor="White" ForeColor="#284775" />

<Columns>

<asp:CommandField ShowSelectButton="True" ButtonType="Image"

SelectText="Выбрать" />

<asp:BoundField DataField="FirmID" HeaderText="№ п/п" InsertVisible="False"

ReadOnly="True" SortExpression="FirmID" />

<asp:BoundField DataField="Name" HeaderText="Название" SortExpression="Name" />

<asp:BoundField DataField="Address" HeaderText="Адрес"

SortExpression="Address" />

<asp:BoundField DataField="Phone" HeaderText="Телефон" SortExpression="Phone" />

<asp:BoundField DataField="HTTP" HeaderText="Сайт" SortExpression="HTTP" />

</Columns>

<EditRowStyle BackColor="#999999" />

<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />

<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />

<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />

<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />

<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />

<SortedAscendingCellStyle BackColor="#E9E7E2" />

<SortedAscendingHeaderStyle BackColor="#506C8C" />

<SortedDescendingCellStyle BackColor="#FFFDF8" />

<SortedDescendingHeaderStyle BackColor="#6F8DAE" />

</asp:GridView>

<br />

<asp:SqlDataSource ID="SqlDataSource2" runat="server"

ConnectionString="<%$ ConnectionStrings:CatalogueConnectionString %>"

DeleteCommand="DELETE FROM [Firms] WHERE [FirmID] = @FirmID"

InsertCommand="INSERT INTO [Firms] ([Name], [Address], [Phone], [HTTP]) VALUES (@Name, @Address, @Phone, @HTTP)"

SelectCommand="SELECT * FROM [Firms] WHERE ([FirmID] = @FirmID)"

UpdateCommand="UPDATE [Firms] SET [Name] = @Name, [Address] = @Address, [Phone] = @Phone, [HTTP] = @HTTP WHERE [FirmID] = @FirmID">

<DeleteParameters>

<asp:Parameter Name="FirmID" Type="Int32" />

</DeleteParameters>

<InsertParameters>

<asp:Parameter Name="Name" Type="String" />

<asp:Parameter Name="Address" Type="String" />

<asp:Parameter Name="Phone" Type="String" />

<asp:Parameter Name="HTTP" Type="String" />

</InsertParameters>

<SelectParameters>

<asp:ControlParameter ControlID="GridView1" Name="FirmID"

PropertyName="SelectedValue" Type="Int32" />

</SelectParameters>

<UpdateParameters>

<asp:Parameter Name="Name" Type="String" />

<asp:Parameter Name="Address" Type="String" />

<asp:Parameter Name="Phone" Type="String" />


<asp:Parameter Name="HTTP" Type="String" />

<asp:Parameter Name="FirmID" Type="Int32" />

</UpdateParameters>

</asp:SqlDataSource>

<br />

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"

CellPadding="4" DataKeyNames="FirmID" DataSourceID="SqlDataSource2"

ForeColor="#333333" GridLines="None" Height="92px"

onitemdeleted="DetailsView1_ItemDeleted"

oniteminserted="DetailsView1_ItemInserted"

onitemupdated="DetailsView1_ItemUpdated" style="margin-left: 15px"

Width="890px">

<AlternatingRowStyle BackColor="White" ForeColor="#284775" />

<CommandRowStyle BackColor="#E2DED6" Font-Bold="True" />

<EditRowStyle BackColor="#999999" />

<FieldHeaderStyle BackColor="#E9ECF1" Font-Bold="True" />

<Fields>

<asp:BoundField DataField="FirmID" HeaderText="№ п/п" InsertVisible="False"

ReadOnly="True" SortExpression="FirmID" />

<asp:BoundField DataField="Name" HeaderText="Название" SortExpression="Name" />

<asp:BoundField DataField="Address" HeaderText="Адрес"

SortExpression="Address" />

<asp:BoundField DataField="Phone" HeaderText="Телефон" SortExpression="Phone" />

<asp:BoundField DataField="HTTP" HeaderText="Сайт" SortExpression="HTTP" />

<asp:CommandField ButtonType="Button" ShowDeleteButton="True"

ShowEditButton="True" ShowInsertButton="True" />

</Fields>

<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />

<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />

<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />

<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />

</asp:DetailsView>

<br />

</asp:Content>

Листинг 2 – Добавление, удаление и редактирование данных в таблице «Товары»:

<%@ Page Title="О нас" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"

CodeFile="Default2.aspx.cs" Inherits="About" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

<style type="text/css">

.style1

{

text-align: center;

font-size: x-large;

color: #000000;

}

</style>

</asp:Content>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

ConnectionString="<%$ ConnectionStrings:CatalogueConnectionString %>"

SelectCommand="SELECT * FROM [Goods]"></asp:SqlDataSource>

<p class="style1">

<strong>Товары</strong></p>

<asp:GridView ID="GridView1" runat="server" AllowPaging="True"

AllowSorting="True" AutoGenerateColumns="False" CellPadding="4"

DataKeyNames="ProductID" DataSourceID="SqlDataSource1" ForeColor="#333333"

GridLines="None" style="margin-left: 15px" Width="890px">

<AlternatingRowStyle BackColor="White" ForeColor="#284775" />

<Columns>

<asp:CommandField ButtonType="Image" ShowSelectButton="True" />

<asp:BoundField DataField="ProductID" HeaderText="№ п/п" InsertVisible="False"

ReadOnly="True" SortExpression="ProductID" />

<asp:BoundField DataField="Name" HeaderText="Название" SortExpression="Name" />

<asp:BoundField DataField="Price" HeaderText="Цена" SortExpression="Price" />

<asp:BoundField DataField="FirmID" HeaderText="Поставщик"

SortExpression="FirmID" />

</Columns>

<EditRowStyle BackColor="#999999" />

<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />

<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />

<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />

<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />

<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />

<SortedAscendingCellStyle BackColor="#E9E7E2" />