Member 11897361 Ответов: 2

как создать страницу входа в mvc для доступа к индексу


Эй, я просто новичок в mVC, хочу создать страницу входа для своего приложения.я могу сделать самое простое. но я хочу видеть там сообщение об ошибке при вводе неправильного имени пользователя и пароля типа user not found


вот мой код контроллера

using MvcApplication1.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;

namespace MvcApplication1.Controllers
{
    public class LoginController : Controller
    {
        //
        // GET: /Login/

        public ActionResult Index()
        {
            return View();
        }
        public ActionResult Login()
        {
            return View();
        }

       [HttpPost]
 public ActionResult Login(Customer  d)
{
    using (CustomerDataEntities oe = new CustomerDataEntities())
    {
        var user = oe.Customers.Where(a => a.UserName.Equals(d.UserName) && a.Password.Equals(d.Password)).FirstOrDefault();
        return RedirectToAction("Index","Home");
    }
           
}
        }

    }

F-ES Sitecore

Если логин не удался, то вам нужно вернуть представление в нормальное состояние, передав отправленные данные в качестве модели, чтобы имя пользователя (и если они проверили "Запомнить меня" и т. д.) оставалось на странице, а также сообщение об ошибке, чтобы показать (или bool на модели, чтобы показать, что есть ошибка). Это базовый MVC 101, пройдите через учебники MVC, и эти методы будут показаны, вы не можете изучить такую технологию, как MVC, с нуля из сообщений на форуме. Google "MVC music store" для хорошего стартового учебника.

2 Ответов

Рейтинг:
9

Krunal Rohit

Контроллер-

public ActionResult Login(Customer d)
        {
            using (CustomerDataEntities oe = new CustomerDataEntities())
            {
                var user = oe.Customers.FirstOrDefault(a => a.UserName.Equals(d.UserName) && a.Password.Equals(d.Password));
                if (user == null)
                {
                    TempData["ErrorMessage"] = "Invalid user name or password."
                    return RedirectToAction("Login", "Home");
                }
                else
                {
                    return RedirectToAction("Index", "Home");
                }
            }
        }

Смотреть- Поместите этот код туда, где вы хотите отобразить сообщение об ошибке
@{
    if(TempData["ErrorMessage"] != null)
    {
        <div id="errorMsg" style="border: solid 1px red; padding: 50px 10px; color:red">
            @TempData["ErrorMessage"]
        </div>
    }
}


-КРОНА


Member 11897361

большое вам спасибо, ваш код работает .Спасибо за ваше время

Рейтинг:
16

Snesh Prajapati

Метод FirstOrDefault вернет null в качестве значения по умолчанию, если имя пользователя и пароль не совпадают в таблице Customer. Таким образом, вы можете использовать условие "Если", чтобы проверить, является ли пользователь нулевым или нет.
Пример кода показан ниже:

public ActionResult Login(Customer d)
        {
            using (CustomerDataEntities oe = new CustomerDataEntities())
            {
                var user = oe.Customers.Where(a => a.UserName.Equals(d.UserName) &&
                                                  a.Password.Equals(d.Password)).FirstOrDefault();
                if (user == null)
                {
                    // If UserName and Password is incorrect then redirect to Login page
                    return RedirectToAction("Login", "Home");
                }
                else
                {
                    // If UserName and Password is correct then redirect to Index page
                    return RedirectToAction("Index", "Home");
                }
            }
        }

В случае возникновения каких-либо проблем сообщите нам об этом.


Member 11897361

Эй, у меня здесь есть одна проблема, я получаю одну глупую ошибку, говоря это
"Текущий запрос на действие "Login" на контроллере типа "LoginController" неоднозначен между следующими методами действия:
System.Web.Mvc.ActionResult Login() по типу MvcApplication1.Контроллеры.LoginController
Системы.Веб.В MVC.ActionResult логин(MvcApplication1.Модели.Клиент) по типу MvcApplication1.Контроллеры.LoginController"
Что это значит, когда я совершаю ошибку

Snesh Prajapati

Ошибка возникает из-за одного и того же имени метода. Вы должны украсить первый из них [HttpGet], где параметр не задан, и [HttpPost], где вы передаете клиента.
Или если оба они являются только HttpGet, то используйте атрибут ActionName.
Или какой-то трюк, как описано в http://stackoverflow.com/questions/9552761/get-and-post-methods-with-the-same-action-name-in-the-same-controller

Member 11897361

использование MvcApplication1.Модели;
использование системы;
использование системы.Коллекции.Общий;
использование System. Linq;
использование системы.Сеть;
использование System. Web.Mvc;
используя системы.Веб.Безопасности;

пространство имен MvcApplication1.Контроллеры
{
открытый класс LoginController : Controller
{
//
// GET: / Login/

индекс public ActionResult()
{
возвращение смотреть();
}
public ActionResult Login()
{
возвращение смотреть();
}

public ActionResult Login(Customer d)
{
используя (CustomerDataEntities оригинального номера = новый CustomerDataEntities())
{
ВАР пользователя = ое.Клиентов.Метода firstordefault(а => у собой.Имя пользователя.Равных(ум.Имя пользователя) и усилитель; & а.Пароль.Равно (d. пароль));
if (user = = null)
{
TempData ["ErrorMessage"] = " неверное имя пользователя или пароль.";
return RedirectToAction("Login", " Home");
}
ещё
{
return RedirectToAction ("Index", " Home");
}
}
}
}
}




вот мой код, можете ли вы просто помочь мне. я просто запутался здесь.Извиняюсь

Member 11897361

Ооооо yeyyyy ее работы я просто применяется HTTP-методов GET и POST,thnak вас так много

Snesh Prajapati

Большинство Добро Пожаловать !!