使用存储过程使用参数显示特定数据

时间:2017-04-09 06:57:01

标签: asp.net-core asp.net-core-mvc entity-framework-core

嗨我在显示特定数据方面有错误。我通过模型传递了一个参数,并且在创建新实例时遇到错误。这是我的代码:

控制器

    [HttpPost]
    [ValidateAntiForgeryToken]
    public IActionResult ViewEmployeeSalary(spGetSalaryPerEmployee getsal)
    {
        var salary = _Context.Set<spGetSalaryPerEmployee>().FromSql("spGetSalaryPerEmployee @empID = {0}", getsal.EmployeeID).AsNoTracking();
        return View(salary);
    }

查看 这是您单击以重定向到详细信息页面的按钮

@foreach(var item in Model)
{
  a class="btn btn-primary btn-sm" asp-controller="Salary" asp-action="ViewEmployeeSalary" asp-route-id="@item.EmployeeId"><span class="glyphicon glyphicon-dashboard" style="vertical-align:middle;margin-top: -5px"></span> Salary Details</a>
}

以下是查看详细信息的页面

@model PEMCOLoan.DAL.Entities.spModels.spGetSalaryPerEmployee

@{
    ViewBag.Title = "Salary Details";
}

<h2>@Html.DisplayFor(model => model.FullName)'s Salary Details</h2>

<table class="table">
    <tr>
        <td class="form-horizontal">ID:</td>
        <td>@Html.DisplayTextFor(model => model.EmployeeID)</td>
    </tr>

    <tr>
        <td class="form-horizontal">Salary Amount:</td>
        <td>@Html.DisplayFor(model => model.Salary)</td>
    </tr>

    <tr>
        <td class="form-horizontal">Remarks:</td>
        <td>@Html.DisplayTextFor(model => model.Remarks)</td>
    </tr>
</table>

我收到此错误:

error

我并不是真的发生了什么,但声明我需要创建一个实例。 我还有一些关于asp.net核心和ef核心的知识,现在仍然在研究这种语言。我真的需要你的帮助,因为我对这种语言有点新意。

任何建议都会非常感激!

1 个答案:

答案 0 :(得分:1)

您的控制器方法需要将单个记录作为错误状态返回。现在它返回一个列表,所以你需要改成这样的东西:

    var salary = _Context.Set<spGetSalaryPerEmployee>().FromSql("spGetSalaryPerEmployee @empID = {0}", getsal.EmployeeID).AsNoTracking().SingleOrDefault();
    //salary now is single record
    return View(salary);

也许您需要先检查salary变量null,然后再将其传递给查看,因为那时您会遇到错误。