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" с пустыми полями, то результатом будет: