我會嘗試在Asp.Net MVC 5(代碼優先)中創建自定義身份驗證和授權。在模型中,我創建了2級,UserAccount
和UserAccountModel
IEnumerable轉換錯誤c#
我有
return listAccounts.Where(acc => acc.UserName.Equals(username));
錯誤代碼是不是英文的,但像這樣在UserAccountModel
的錯誤: 是不可能的隱式轉換IEnumerable
到列表中,請使用演員表
如何解決該問題?感謝
//-------------------------------
//UserAccont.cs
//-------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace MvcSia.Models
{
public class UserAccont
{
[Key]
public int UserId { get; set; }
[Required(ErrorMessage ="Choose a name")]
public string Name{ get; set; }
[Required(ErrorMessage ="Choose surname")]
public string Surname{ get; set; }
[Required(ErrorMessage ="Email required")]
[RegularExpression(@"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$", ErrorMessage = "Invalid email")]
public string Email { get; set; }
[Required(ErrorMessage = "User Name required")]
public string UserName { get; set; }
[Required(ErrorMessage = "User type required")]
public string UserType { get; set; }
[Required(ErrorMessage = "Password required")]
[DataType(DataType.Password)]
public string Password { get; set; }
[Compare("Password", ErrorMessage ="Password not valid")]
[DataType(DataType.Password)]
[Required(ErrorMessage = "User Name required")]
public string ConfirmPassword { get; set; }
}
}
//-------------------------------
//UserAccountModel.cs
//-------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MvcSia.Models
{
public class UserAccontModel
{
private List<UserAccont> listAccounts = new List<UserAccont>();
public UserAccont find(string username)
{
return listAccounts.Single(acc => acc.UserName.Equals(username));
}
public UserAccont login(string username, string password)
{
return listAccounts.Where(acc => acc.UserName.Equals(username));
}
}
}
嗯,你的方法是爲了返回'UserAccont'(錯字了'UserAccount',順便說一句),但'Where'方法會返回一個IEnumerable的''。也許你的意思是'FirstOrDefault'而不是'Where'?我還*強烈*鼓勵你遵循.NET命名約定。 –
您的方法期望返回類型爲'UserAccont'而不是'List的集合' –
garfbradaz
如果更改爲FirstOrDefault或SingleOrDefault,請不要忘記從登錄方法中檢查返回值。另外,我會在您的Find方法上使用FirstOrDefault或SingleOrDefault,並且也檢查它們。如果一個用戶賬戶不存在,你的查找會拋出一個異常。 – Bearcat9425