【问题标题】:Display specific data with parameter using Stored Procedure使用存储过程显示带有参数的特定数据
【发布时间】:2017-04-09 06:57:00
【问题描述】:

您好,我在显示特定数据时遇到了错误。我通过模型传递了一个参数,但在创建新实例时出现错误。这是我的代码:

控制器

    [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>

我收到此错误:

我并不知道真正发生了什么,但我说我需要创建一个实例。 我对 asp.net core 和 ef core 还有些了解,目前仍在学习这门语言。在这方面我真的需要你的帮助,因为我对这种语言有点陌生。

任何建议将不胜感激!

【问题讨论】:

  • 请不要插入错误消息的图像,而是插入文本。通过链接图片,您将不会因为此错误而从搜索引擎中获得点击。
  • 请不要将标签强加到问题标题中。阅读stackoverflow.com/help/tagging,了解如何正确使用标签

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


【解决方案1】:

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

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

也许您需要在将salary 变量传递给查看之前检查它是否不是null,因为那样您就会有错误。

【讨论】:

  • 嗨@Mantas,代码似乎有效,但我重定向到一个空白页面,我不知道为什么。我试图检查asp-action,它似乎没有错。你能看一下我的代码吗?
  • 如果你在一个视图中放置一个断点,它会被命中吗?视图是否首先显示详细信息,然后重定向到空白?还是直接进入空白页?
  • 我确实设置了一个断点,但它似乎没有通过我的 ViewEmployeeSalary 课程。我觉得很奇怪,因为我检查了控制器和动作。
  • 哦……对不起,我删除了 [ValidateAntiForgeryToken] 并将 [HttpPost] 更改为 [HttpGet],它现在就像一个魅力……谢谢!
  • 很高兴听到 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
相关资源
最近更新 更多