Asp.net mvc 5 如何在asp.net mvc 5代码优先方法中创建登录页面?

Asp.net mvc 5 如何在asp.net mvc 5代码优先方法中创建登录页面?,asp.net-mvc-5,Asp.net Mvc 5,我对我的代码使用代码优先的方法, 这是我的密码 [HttpPost] public ActionResult ClientLogin(Client client) { using(ClientContext db = new ClientContext()) { var cl = db.Clients.Single(c => c.Email == client.Email && c.Password == client.Passwor

我对我的代码使用代码优先的方法, 这是我的密码

[HttpPost]
public ActionResult ClientLogin(Client client)
    {
    using(ClientContext db = new ClientContext())
    {
        var cl = db.Clients.Single(c => c.Email == client.Email && c.Password == client.Password);

        if(cl !=null)
        {
            Session["Client_Id"] = cl.Client_Id.ToString();
            Session["Email"] = cl.Email.ToString();
            Session["Client_Name"] = cl.Client_Name.ToString();
            return RedirectToAction("LoggedIn");
        }
        else
        {
            ModelState.AddModelError("", "Wrong");
        }
    }
    return View();
    }
当电子邮件和密码正确时,它将成功登录,但当电子邮件或密码不正确时,它将向我显示错误,而不是重定向回登录页面

这里是错误 序列不包含任何元素

描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:System.InvalidOperationException:序列不包含任何元素

源错误:

Line 64:         using(ClientContext db = new ClientContext())
Line 65:         {
Line 66:             var cl = db.Clients.Single(c => c.Email == client.Email && c.Password == client.Password);
Line 67: 
Line 68:             if(cl !=null)

Source File: c:\Users\Admin\Desktop\Sem 4\practicals\Pre-sales\Pre-sales\Controllers\Client\ClientController.cs    Line: 66 

Stack Trace: 


[InvalidOperationException: Sequence contains no elements]
   System.Linq.Enumerable.Single(IEnumerable`1 source) +316
   System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__3(IEnumerable`1 sequence) +40
   System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable`1 query, Expression queryRoot) +60
   System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(Expression expression) +113
   System.Data.Entity.Internal.Linq.DbQueryProvider.Execute(Expression expression) +113
   System.Linq.Queryable.Single(IQueryable`1 source, Expression`1 predicate) +283
   Pre_sales.Controllers.ClientClass.ClientController.ClientLogin(Client client) in c:\Users\Admin\Desktop\Sem 4\practicals\Pre-sales\Pre-sales\Controllers\Client\ClientController.cs:66
   lambda_method(Closure , ControllerBase , Object[] ) +104
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +156
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
   System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +22
   System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +29
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32
   System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +50
   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225
   System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +10
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34
   System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +26
   System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
   System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +39
   System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +28
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +29
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
   System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +31
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +578
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +157
第64行:使用(ClientContext db=new ClientContext())
第65行:{
第66行:var cl=db.Clients.Single(c=>c.Email==client.Email&&c.Password==client.Password);
第67行:
第68行:如果(cl!=null)
源文件:c:\Users\Admin\Desktop\Sem 4\practicals\Pre-sales\Pre-sales\Controller\Client\ClientController.cs行:66
堆栈跟踪:
[无效操作异常:序列不包含任何元素]
系统。Linq。可枚举。单个(IEnumerable`1源)+316
System.Data.Entity.Core.Objects.elink.ObjectQueryProvider.b__3(IEnumerable`1序列)+40
System.Data.Entity.Core.Objects.elink.ObjectQueryProvider.ExecuteSingle(IEnumerable`1查询,表达式queryRoot)+60
System.Data.Entity.Core.Objects.elink.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(表达式)+113
System.Data.Entity.Internal.Linq.DbQueryProvider.Execute(表达式)+113
System.Linq.Queryable.Single(IQueryable`1源,表达式`1谓词)+283
c:\Users\Admin\Desktop\Sem 4\practicals\Pre-sales\Pre-sales\Controllers\ClientClass.ClientController.ClientLogin(客户端)中的Pre\sales.Controllers.ClientClass.ClientController.ClientLogin
lambda_方法(闭包、控制器基、对象[])+104
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase控制器,对象[]参数)+14
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext ControllerContext,IDictionary`2参数)+156
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext ControllerContext,ActionDescriptor ActionDescriptor,IDictionary`2参数)+27
System.Web.Mvc.Async.AsyncControllerActionInvoker.b_u39(IAsyncResult asyncResult,ActionInvoking innerInvokeState)+22
System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)+29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()+49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)+32
System.Web.Mvc.Async.AsyncInvocationWithFilters.b__3d()+50
System.Web.Mvc.Async.c_uudisplayClass46.b_uu3f()+225
System.Web.Mvc.Async.c__显示Class33.b__32(IAsyncResult asyncResult)+10
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult)+10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()+49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)+34
System.Web.Mvc.Async.c__显示类2b.b__1c()+26
System.Web.Mvc.Async.c__显示Class21.b__1e(IAsyncResult asyncResult)+100
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult)+10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()+49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)+27
System.Web.Mvc.Controller.b_u1d(IAsyncResult asyncResult,ExecuteCorerate innerState)+13
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)+36
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()+54
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)+39
System.Web.Mvc.Controller.b_u15(IAsyncResult asyncResult,Controller-Controller)+12
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)+28
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()+54
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)+29
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult)+10
System.Web.Mvc.MvcHandler.b_uu5(IAsyncResult asyncResult,ProcessRequestState innerState)+21
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)+36
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()+54
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)+31
System.Web.Mvc.MvcHandler.System.Web.IHTTPassynchandler.EndProcessRequest(IAsyncResult结果)+9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+578
System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)+157

因为
.Single()
如果没有匹配的项目,就会抛出该异常。使用
FirstOrDefault()
并测试
null
(然后放弃所有这些,去MVC网站学习如何保护你的应用程序,包括使用身份)。不要重新发明轮子。它很有效,谢谢你的“Stephen”