Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Изменение представления AboutСодержание книги Поиск на нашем сайте 1. Замените код в Views\Home\About.cshtml файла следующим кодом: @model IEnumerable<ContosoUniversity.ViewModels.EnrollmentDateGroup> @{ ViewBag.Title = "Student Body Statistics";} <h2>Student Body Statistics</h2> <table> <tr> <th> Enrollment Date </th> <th> Students </th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.EnrollmentDate) </td> <td> @item.StudentCount </td> </tr>}</table>2. Запустите приложение и нажмите меню About. Количество студентов, зачисленных отображает в таблице.
Работа с изображениями 1. с помощью запросов sql На update обновить поле таблицы с image update Buses set bus_picture = (SELECT MyImage.* from Openrowset(Bulk 'D:\3.png', Single_Blob) MyImage) where id_bus = 3
2. в представления таблиц (INDEX.CSHTML, Details.cshtml), имеющей image, добавить элемент управления: <td>
@{ byte[] photo = item.bus_picture; string imageSrc = null; if (photo!= null) { MemoryStream ms = new MemoryStream(); ms.Write(photo, 0, photo.Length); string imageBase64 = Convert.ToBase64String(ms.ToArray()); imageSrc = string.Format("data:image/jpg;base64,{0}", imageBase64); string base64String = Convert.ToBase64String(photo, 0, photo.Length); } }
<img src="@imageSrc" alt="Image" width="150" height="100" /> </td>
3. В Create.cshtml Добавить @model WebExASP_Full.Buses
@{ ViewBag.Title = "Create"; }
<h2>Новый атвобус</h2>
@using (Html.BeginForm(Html.BeginForm("Create", "Buses", null, FormMethod.Post, new {enctype = "multipart/form-data"})))
И элементы управления: <div class="form-group"> @Html.LabelFor(model=>model.bus_picture, new { @class = "control-label col-md-2" }) <div class="col-md-10"> <input type="file" name="upload" value="Обзор..." /> </div> </div>
<div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="Добавить" class="btn btn-default" /> </div> </div>
В контроллере этого представления изменить метод public ActionResult Create([Bind(…. public ActionResult Create([Bind(Include="id_bus,name_bus,id_model,date_bus,quant,bus_picture,bus_price")] Buses buses, HttpPostedFileBase upload) { if (ModelState.IsValid) { if (upload!= null && upload.ContentLength > 0) { using (var reader = new System.IO.BinaryReader(upload.InputStream)) { buses.bus_picture = reader.ReadBytes(upload.ContentLength); } } db.Buses.Add(buses); db.SaveChanges(); return RedirectToAction("Index"); }
ViewBag.id_model = new SelectList(db.ModelsofBuses, "id_model", "name_model", buses.id_model); return View(buses); }
4. в Edit.cshtml @model WebExASP_Full.Buses
@{ ViewBag.Title = "Edit"; }
<h2>Edit</h2>
@using (Html.BeginForm(Html.BeginForm("Edit", "Buses", null, FormMethod.Post, new { enctype = "multipart/form-data" })))
Элемент управления: <div class="editor-label">Фото</div> <div class="editor-field"> @if (Model.bus_picture == null) { @:None } else { byte[] photo = Model.bus_picture; string imageSrc = null; if (photo!= null) { MemoryStream ms = new MemoryStream(); ms.Write(photo, 0, photo.Length); string imageBase64 = Convert.ToBase64String(ms.ToArray()); imageSrc = string.Format("data:image/jpg;base64,{0}", imageBase64); string base64String = Convert.ToBase64String(photo, 0, photo.Length); }
<img width="250" height="150" src="@imageSrc" /> } <div>Выбрать новую фотографию: <input type="file" name="upload" /></div> </div>
В контроллере этого представления изменить метод public ActionResult Edit([Bind(Include =…
try { if (ModelState.IsValid) { db.Entry(buses).State = EntityState.Modified; if (upload!= null && upload.ContentLength > 0) { using (var reader = new System.IO.BinaryReader(upload.InputStream)) { buses.bus_picture = reader.ReadBytes(upload.ContentLength); } db.SaveChanges(); }
else { db.Entry(buses).Property(m => m.bus_picture).IsModified = false; db.SaveChanges(); }
return RedirectToAction("Index"); }
return View(buses); } catch(Exception e) {} Регистрация
1. создаем ХП к базе на Insert
CREATE PROCEDURE [dbo].[Insert_User] @Email NVARCHAR(30), @Password NVARCHAR(20), @Nickname NVARCHAR(20) AS BEGIN SET NOCOUNT ON; IF EXISTS(SELECT email FROM UsersASP WHERE email = @Email) BEGIN SELECT -1 AS UserId -- Username exists. END
ELSE BEGIN INSERT INTO [UsersASP] ([email] ,[password] ,[name_surname] ,[date_reg]) VALUES ,@Password ,@Nickname ,GETDATE()) select 1 --SELECT SCOPE_IDENTITY() AS UserId -- UserId END END 2. проверяем выполнение ХП на сервере с помощью EXECUTE!!!!
3. Добавляем ХП в модель, она отобразится как функция (а не свойство), ее можно увидеть только в ModelBrowser
4. Редактируем класс RegisterViewModel в AccountViewModels.cs в зависимости от нужных полей
5. редактируем страницу регистрации Register.cshtml в зависимости от нужных полей
6. В AccountController.cs редактируем асинхронную функцию Register например так try { // Verification. if (ModelState.IsValid) { // Initialization. var regInfo = this.DBTest.Insert_User(model.UserName, model.Password,model.NameSurname).ToList(); // Verification. if (regInfo!= null && Convert.ToInt32(regInfo[0])!=-1) { //SAVING CHANGES TO DATABASE DBTest.SaveChanges(); // return RedirectToAction("Index", "Home"); return RedirectToAction("Login", "Account");
} else { ModelState.AddModelError(string.Empty, "ПОЛЬЗОВАТЕЛЬ С ТАКИМ ИМЕНЕМ (E-MAIL) УЖЕ СУЩЕСТВУЕТ."); } } } catch (Exception ex) { }
return this.View(model);
Авторизация
1. ХП на проверку логина\пароля из базы (имя ХП можете дать ЛЮБОЕ)
CREATE PROCEDURE [dbo].[LoginByUsernamePassword] @username varchar(50), @password varchar(50) AS BEGIN SELECT email, UsersASP.password FROM UsersASP WHERE email = @username AND UsersASP.password = @password END
2. Обновили EDM!
3. В "RouteConfig.cs" в папке "App_Start" поменять routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }); по дефолту будет ВХОД В АКК
4. В "Startup.Auth.cs" app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), LogoutPath = new PathString("/Account/LogOff"), ExpireTimeSpan = TimeSpan.FromMinutes(5.0) });
5. В "Global.asax.cs" добавить в конец метода "Application_Start": AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.Name;
6. В "_Layout.cshtml" все страницы-представления убрать под IF @if (User.Identity.IsAuthenticated) { <li>@Html.ActionLink("Home", "Index", "Home")</li> <li>@Html.ActionLink("About", "About", "Home")</li> <li>@Html.ActionLink("Contact", "Contact", "Home")</li> <li>@Html.ActionLink("Buses", "Index", "Buses")</li>} } 7. В "Index.cshtml" под "Views->Home" для класса jumbotron <div class="jumbotron"> <h1>Приветики</h1> <p class="lead">Login from "@User.Identity.Name" Account.</p> </div>
8. В "HomeController.cs" в папке " Controller " оставить только: [Authorize] public class HomeController: Controller { public ActionResult Index() { return View(); } }
|
||
|
Последнее изменение этой страницы: 2019-04-27; просмотров: 296; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.39 (0.007 с.) |