2017-07-24 75 views
1

我正在創建登錄窗口,輸入錯誤憑證後按提交按鈕時會出現問題。 這是我的看法System.Data.Entity.Core.MetadataException:'指定的模式無效。

@model ProjectyMcProjectface.Models.RegisteredUser 
<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Login page</title> 
    @Styles.Render("~/Content/LoginVisuals") 
</head> 
<body> 
    <div id="LoginWrapper"> 
     @using (Html.BeginForm("Authorize", "Login",FormMethod.Post)) 
     { 
      <table id="LoginTable"> 
       <tr> 
        <td>@Html.LabelFor(model => model.UserName)</td> 
        <td>@Html.EditorFor(model => model.UserName)</td> 
       </tr> 

       <tr> 
        <td></td> 
        <td>@Html.ValidationMessageFor(model => model.UserName)</td> 
       </tr> 

       <tr> 
        <td>@Html.LabelFor(model => model.PassWord)</td> 
        <td>@Html.EditorFor(model => model.PassWord)</td> 
       </tr> 

       <tr> 
        <td></td> 
        <td>@Html.ValidationMessageFor(model => model.PassWord)</td> 
       </tr> 

       <tr> 
        <td colspan="2"><label class="field-validation-error">@Html.DisplayFor(model => model.LoginErrorMessage)</label></td> 
       </tr> 

       <tr> 
        <td></td> 
        <td> 
        <input type="submit" value="Login" /> 
        <input type="reset" value="Clear" /> 
        </td> 
       </tr> 

      </table> 
     } 
    </div> 

    @Scripts.Render("~/bundles/ValidationScripts") 
</body> 
</html> 

我的註冊用戶模型

public partial class RegisteredUser 
    { 
     public int Id { get; set; } 

     [DisplayName("User Name")] 
     [Required(ErrorMessage = "This field is required to be filled")] 
     public string UserName { get; set; } 

     [DataType(DataType.Password)] 
     [DisplayName("Password")] 
     [Required(ErrorMessage = "This field is required to be filled")] 
     public string PassWord { get; set; } 

     public string LoginErrorMessage { get; set; } 
    } 

和我的登錄控制器

[HttpPost] 
public ActionResult Authorize(ProjectyMcProjectface.Models.RegisteredUser userModel) 
{ 
    using (InternalDBEntities1 db = new InternalDBEntities1()) 
    { 
     var userDetails = db.RegisteredUsers.Where(x => x.UserName == userModel.UserName && x.PassWord == userModel.PassWord).FirstOrDefault(); 
     if (userDetails == null) 
     { 
      userModel.LoginErrorMessage = "Your password or user name is incorrect"; 
      return View("Index", "Login", userModel); 
     } 

    } 

     return View(); 
} 

行中的錯誤火災

var userDetails = db.RegisteredUsers.Where(x => x.UserName == userModel.UserName && x.PassWord == userModel.PassWord).FirstOrDefault(); 

,並說

CLR類型到EDM類型的映射不明確,因爲多個CLR 類型與EDM類型'RegisteredUser'匹配。以前發現的CLR類型 'ProjectyMcProjectface.RegisteredUser',新發現的CLR類型 'ProjectyMcProjectface.Models.RegisteredUser'。'

我該如何解決這個問題?

+0

從您發佈的錯誤中可以看出您有兩個類別的衝突。他們都被命名爲RegisteredUser。一個駐留在ProjectyMcProjectface中,另一個駐留在ProjectyMcProjectface.Models中。這就是造成歧義的原因。我會建議你重命名其中的一個 – jamiedanq

+0

@jamiedanq是的,謝謝,它的工作! –

+0

很高興解決了它! – jamiedanq

回答

0

這似乎是Edm的道路已經改變了一些如何。請檢查edm位置是否正常並重新整理項目