C# 如何使用实体框架在MVC中显示存储过程返回的数据

C# 如何使用实体框架在MVC中显示存储过程返回的数据,c#,asp.net-mvc,asp.net-mvc-5,entity-framework-6,C#,Asp.net Mvc,Asp.net Mvc 5,Entity Framework 6,我是MVC和实体框架的新手,所以如果这是一个简单的问题,请原谅 我正在开发一个简单的项目(MVC5-EF6),它根据名字和姓氏查询客户表,并返回客户信息。我使用实体框架调用存储过程来返回数据 我已经导入了数据库,一切似乎都正常。我唯一不确定的是,我应该如何使用视图显示返回数据 我试图将数据放在我创建的模型中,但是当我调试数据时,数据就在那里,尽管我不确定它应该在这一行返回什么: return View(customerModel); 当我遇到这个错误时: 传递到字典中的模型项的类型为“Cus

我是MVC和实体框架的新手,所以如果这是一个简单的问题,请原谅

我正在开发一个简单的项目(MVC5-EF6),它根据名字和姓氏查询客户表,并返回客户信息。我使用实体框架调用存储过程来返回数据

我已经导入了数据库,一切似乎都正常。我唯一不确定的是,我应该如何使用视图显示返回数据

我试图将数据放在我创建的模型中,但是当我调试数据时,数据就在那里,尽管我不确定它应该在这一行返回什么:

 return View(customerModel);
当我遇到这个错误时:

传递到字典中的模型项的类型为“CustomerPortal_MVC.Models.CustomerModel”,但此字典需要类型为“CustomerPortal_MVC.Customer”的模型项

这是调用存储过程的方法:

public ActionResult Details()
{
    using (var context = new CustomerPortalEntities())
    {
        var customers = context.Search_Customer_By_Name("NONA", "WHITE", null);
        CustomerModel customerModel = new CustomerModel();

        foreach (var item in customers)
        {
            customerModel.Account_Number = item.Account_Number;
            customerModel.First_Name = item.First_Name;
            customerModel.Last_Name = item.Last_Name;
            customerModel.Payment_in = item.Payment_in;
        }

        return View(customerModel);
    }
}
这是一个模型:

public class CustomerModel
{
    public int Customer_ID { get; set; }
    public string Account_Number { get; set; }
    public string First_Name { get; set; }
    public string Last_Name { get; set; }
    public string Payment_in { get; set; }
}
这是视图的代码,它是自动填充的

 @model CustomerPortal_MVC.Customer

 @{
  ViewBag.Title = "Details";
   }

<h2>Details</h2>

<div>
<h4>Customer</h4>
<hr />
<dl class="dl-horizontal">
    <dt>
        @Html.DisplayNameFor(model => model.Account_Number)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Account_Number)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.First_Name)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.First_Name)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.Middle_Name)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Middle_Name)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.Last_Name)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Last_Name)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.Password)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Password)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.isRegistered)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.isRegistered)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.isActivated)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.isActivated)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.isActive)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.isActive)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.isLocked)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.isLocked)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.Account_Payment_Status)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Account_Payment_Status)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.unsuccessful_login_count)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.unsuccessful_login_count)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.Username)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Username)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.Last4SSN)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Last4SSN)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.Create_Date)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Create_Date)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.Modified_Date)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Modified_Date)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.Account_Status)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Account_Status)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.Salt)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Salt)
    </dd>

</dl>
</div>
<p>
@Html.ActionLink("Edit", "Edit", new { id = Model.Customer_ID }) |
@Html.ActionLink("Back to List", "Index")
@model CustomerPortal\u MVC.Customer
@{
ViewBag.Title=“详细信息”;
}
细节
顾客

@Html.DisplayNameFor(model=>model.Account\u编号) @Html.DisplayFor(model=>model.Account\u编号) @DisplayNameFor(model=>model.First\u Name) @DisplayFor(model=>model.First\u Name) @DisplayNameFor(model=>model.Middle\u Name) @DisplayFor(model=>model.Middle\u Name) @DisplayNameFor(model=>model.Last_Name) @DisplayFor(model=>model.Last_Name) @DisplayNameFor(model=>model.Password) @DisplayFor(model=>model.Password) @DisplayNameFor(model=>model.isRegistered) @DisplayFor(model=>model.isRegistered) @DisplayNameFor(model=>model.isActivated) @DisplayFor(model=>model.isActivated) @DisplayNameFor(model=>model.isActive) @DisplayFor(model=>model.isActive) @DisplayNameFor(model=>model.isLocked) @DisplayFor(model=>model.isLocked) @Html.DisplayNameFor(model=>model.Account\u Payment\u状态) @Html.DisplayFor(model=>model.Account\u Payment\u Status) @DisplayNameFor(model=>model.unsuccessful\u login\u count) @DisplayFor(model=>model.unsuccessful\u login\u count) @DisplayNameFor(model=>model.Username) @DisplayFor(model=>model.Username) @DisplayNameFor(model=>model.Last4SSN) @DisplayFor(model=>model.Last4SSN) @DisplayNameFor(model=>model.Create\u Date) @DisplayFor(model=>model.Create\u Date) @DisplayNameFor(model=>model.Modified_Date) @DisplayFor(model=>model.Modified_Date) @DisplayNameFor(model=>model.Account\u状态) @DisplayFor(model=>model.Account\u状态) @DisplayNameFor(model=>model.Salt) @DisplayFor(model=>model.Salt) @ActionLink(“编辑”,“编辑”,新的{id=Model.Customer\u id})| @ActionLink(“返回列表”、“索引”)

解决方案:

我改变了这种看法:

 @model CustomerPortal_MVC.Models.CustomerModel

@{
     ViewBag.Title = "Details";
}

 <h2>Details</h2>

 <div>
<h4>Customer</h4>
<hr />
<table>


    <tr>
        <td>
            @Html.DisplayFor(model => model.First_Name)
             @Html.DisplayFor(model => model.Account_Number)
        </td>

    </tr>

</table>

</div>
   <p>
    @Html.ActionLink("Edit", "Edit", new { id = Model.Customer_ID }) |
@Html.ActionLink("Back to List", "Index")
</p>
@model CustomerPortal\u MVC.Models.CustomerModel
@{
ViewBag.Title=“详细信息”;
}
细节
顾客

@DisplayFor(model=>model.First\u Name) @Html.DisplayFor(model=>model.Account\u编号) @ActionLink(“编辑”,“编辑”,新的{id=Model.Customer\u id})| @ActionLink(“返回列表”、“索引”)


问题在于,您的视图预期的类型与您返回的类型不同

在视图的顶部,您可能有一条线,看起来像:

@model CustomerPortal_MVC.Customer
应该是:

@model CustomerPortal_MVC.Models.CustomerModel

传递给View()的内容应与视图所期望的类型相同。这是与ViewBag相比的优势之一,因为您可以对模型进行类型检查

请格式化您的code@albertjan我不确定代码的格式,第一部分是错误消息,而不是代码。错误消息是非常自解释的。哪一部分你不明白?您的视图需要不同的模型…您能显示视图代码吗?@TusharGupta我已将视图添加到代码中。你是对的,视图正在使用不同的更新,因为在我添加streo proc时它只是自动填充。谢谢你,我已经为我的问题添加了解决方案。