如何将对象结果转换为 List 对象以用于 MVC 中的存储过程
本文关键字:对象 MVC 用于 存储过程 结果 转换 List | 更新日期: 2023-09-27 18:32:58
我是MVC的新手,正在进行登录页面验证,并且在控制器中遇到问题,用于通过带有.edmx
文件的存储过程获取登录用户数据。
PROC_LogIn_Info
是存储过程的名称。
我收到一个错误:
无法将方法组"ToList"转换为非委托类型"System.Collections.Generic.List"。是否打算调用该方法?
法典:
[HttpPost]
public ActionResult Login(tblUserMaintenance user)
{
if (ModelState.IsValid)
{
using (dbPA_MVCEntities objCon = new dbPA_MVCEntities())
{
List<Login> LoginUser = objCon.PROC_LogIn_Info("jhony", "a").ToList();
// showing Error here
}
}
else
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return RedirectToAction("LoginIndex", "Login");
}
我的模型是Login
:
public class Login
{
[Required]
[DisplayName("User ID")]
public string vUserID { get; set; }
[DisplayName("User Name")]
public string vUserName { get; set; }
[DisplayName("User Email Id")]
public string vUserEmail { get; set; }
[DisplayName("Phone Number")]
public string vPhoneNumber { get; set; }
public string vRoleId { get; set; }
public string IsActive { get; set; }
public string chUserType { get; set; }
[Required]
[DisplayName("Password")]
public string vPassword { get; set; }
public List<Login> LoginUsersData { get; set; }
}
首先在 cs 文件中引用 System.Linq,然后使用 System.Linq 中的 ToList:
using System;
using System.Collections.Generic;
using System.Linq;
public IList<ActivityEvent> GetActivityEvent(string sESSION_ID)
{
var result = this.unitOfWork.Context.GetActivityEvent(sESSION_ID);
if (result != null)
{
return result.ToList();
}
return null;
}
我搜索了很多文章,但没有看到正确的答案。因此,我创建了一个示例代码段。希望这有帮助。
static void Main(string[] args)
{
List<User> myUserList = GetUserList();
}
public static List<User> GetUserList()
{
var dbContext = new UserEntities();
var results = dbContext.GetUserDetails();
return results.Select(x => new User
{
User_id = x.User_id,
First_Name = x.First_Name,
Last_Name = x.Last_NAME
}).ToList();
}
在上面的代码段中,dbContext 是 edmx 上下文引用。UserEntities() 是我的 edmx 实例的名称。GetUserDetails() 是存储过程的名称,User 是模型类。 希望这对:)有所帮助
引用:https://forums.asp.net/t/2072373.aspx?Can+not+implicitly+convert+List+objectresult+T+to+collection+GenericList+T+
存储过程的结果是唯一的自动生成类型。进行转换的最简单方法是
List<Login> LoginUser = from result in objCon.PROC_LogIn_Info("jhony", "a").ToList()
select new Login
{
// Set each property in turn
vUserID = result.UserId;
...
};
通过使用复杂类型的PROC_LogIn_Info_Result
[HttpPost]
public ActionResult Login(Login user)
{
if (ModelState.IsValid)
{
using (dbPA_MVCEntities objCon = new dbPA_MVCEntities())
{
List<PROC_LogIn_Info_Result> LoginUser = objCon.PROC_LogIn_Info(user.vUserid, user.vPassword).ToList<PROC_LogIn_Info_Result>();
if (LoginUser.Count > 0)
{
Session["UserID"] = LoginUser[0].vUserid;
Session["UserName"] = LoginUser[0].vUserName;
Session["UserRole"] = LoginUser[0].vRole;
Session["UserType"] = LoginUser[0].vUserType;
Session["UserEmailId"] = LoginUser[0].vUserEmail;
}
else
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
else
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return RedirectToAction("LoginIndex", "Login");
}