Web Matrix. Работа с данным
Добавление записей в базу данных
1.В текущем проекте создадим еще один CSHTML файл, и назовем его InsertProducts.cshtml:
2.Заменим начальный код страницы InsertProducts.cshtml на:
@{
var db = Database.Open("SmallBakery");
var name = Request["Name"];
var description = Request["Description"];
var price = Request["Price"];
if (IsPost)
{
name = Request["Name"];
if (String.IsNullOrEmpty(name))
{
ModelState.AddError("Name", "Product name is required.");
}
description = Request["Description"];
if (String.IsNullOrEmpty(description))
{
ModelState.AddError("Description",
"Product description is required.");
}
price = Request["Price"];
if (String.IsNullOrEmpty(price))
{
ModelState.AddError("Price", "Product price is required.");
} if(ModelState.IsValid)
{
var insertQuery = "INSERT INTO Product (name, description, price) " +
"VALUES (@0, @1, @2)";
db.Execute(insertQuery, name, description, price);
Response.Redirect(@Href("/ListProducts"));
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>Add Products</title>
<style type="text/css">
label {float:left; width: 8em; text-align: right;
margin-right: 0.5em;}
fieldset {padding: 1em; border: 1px solid; width: 35em;}
legend {padding: 2px 4px; border: 1px solid; font-weight:bold;}
</style>
</head>
<body>
<h1>Add New Product</h1>
@Html.ValidationSummary()
<form method="post" "action=''>
<fieldset>
<legend>Add Product</legend>
<div>
<label>Name:</label>
<input name="Name" type="text" size="50" value="@name" />
</div>
<div>
<label>Description:</label>
<input name="Description" type="text" size="50"
value="@description" />
</div>
<div>
<label>Price:</label>
<input name="Price" type="text" size="50" value="@price" />
</div>
<div>
<label> </label>
<input type="submit" value="Insert" class="submit" />
</div>
</fieldset>
</form>
</body>
</html>Тег <body></body> содержит HTML форму с тремя текстовыми полями ( text box ) имя продукта, описание продукта, и его стоимость. Когда пользователь жмет на кнопку Insert, создается соединение с базой данных SmallBakery.sdf ( Метод Database.Open ), после чего из формы берутся значения текстовых полей ( text box ).
Для проверки данных, введенных пользователем, используется следующие фрагменты кода:
…
if (name.IsEmpty())
{
ModelState.AddError("Name", "Product name is required.");
}
…
if (description.IsEmpty())
{
ModelState.AddError("Description",
"Product description is required.");
}
…
if (price.IsEmpty())
{
ModelState.AddError("Price", "Product price is required.");
}
…И если значение переменой name, description или price пустое, используем метод ModelState.AddError.Далее метод ModelState.IsValid проверяет, все ли данные прошли проверку (в нашем случае, не пустые поля), и если да, то выполняется SQL запрос с параметрами:
if(ModelState.IsValid)
{
var insertQuery = "INSERT INTO Product (name, description, price) " + "VALUES (@0, @1, @2)";
db.Execute(insertQuery, name, description, price);
}После выполнения запроса страница, с помощью метода Response.Redirect, переадресуется на страницу ListProducts.cshtml.
И в заключении о строчке с методом Html.ValidationSummary(), которая выводит накопленные сообщения об ошибках, а если точнее сообщения которые мы прописали в методе ModelState.AddError.
К примеру, если мы нажмем кнопку "Insert" с пустыми полями, то результатом будет:

