Изменение представления About 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Изменение представления 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

(@Email

,@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; просмотров: 216; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.128.198.21 (0.025 с.)