Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将存储过程列放入Razor代码中_Sql_Asp.net Mvc_C# 4.0_Model View Controller_Linq To Sql - Fatal编程技术网

Sql 将存储过程列放入Razor代码中

Sql 将存储过程列放入Razor代码中,sql,asp.net-mvc,c#-4.0,model-view-controller,linq-to-sql,Sql,Asp.net Mvc,C# 4.0,Model View Controller,Linq To Sql,我从MVC调用存储过程,它只返回一条记录 SP包含: PROCEDURE [dbo].[GetMonthlyReport] @emplID INT = NULL, @month VARCHAR(50) = NULL AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON;

我从MVC调用存储过程,它只返回一条记录

SP包含:

PROCEDURE [dbo].[GetMonthlyReport] @emplID INT = NULL,
    @month VARCHAR(50) = NULL
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    IF (@emplID IS NOT NULL AND @month IS NOT NULL) --If Block begins
    BEGIN
        SELECT *
        FROM MonthlyRecord
        WHERE Month = @month AND EmplID = @emplID
    END --If block ends
    ELSE --Else block begins
    BEGIN
        RETURN 0
    END --Else block ends
END
现在它正在从MonthlyRecord视图中选择empID、加班、月、总持续时间

我想做的是将这些字段放在自定义模板中,例如HTML表格或列表,如:

<table style="width:300px">
<tr>
<td>Employee ID</td>
<td>Month</td> 
</tr>
<tr>
<td>@empID</td>
<td>@Month</td> 
</tr>
</table>

员工ID
月
@埃皮德
@月
动态的东西

MVC代码:

控制器:

public ActionResult Generated_PaySlip(int? emplID, String month) 
{
IEnumerable<GetMonthlyReportResult> PaySlip = DataContext.GetMonthlyReport(emplID, month).ToList();
return View(PaySlip);
}
public ActionResult生成的\u工资单(整数?雇员ID,字符串月份)
{
IEnumerable工资单=DataContext.GetMonthlyReport(雇员ID,月份).ToList();
返回视图(工资单);
}
视图:

@使用EmployeeAttention\u应用程序模型
员工工资单
员工ID
月
@埃皮德
@月

您非常接近,但您需要告诉Razor view您使用的是什么型号。 修改Razor代码,如下所示:

@model GetMonthlyReportResult
@using EmployeeAttendance_app.Models

<h2>Employee Pay Slip</h2>

<table style="width:300px">
<tr>
<td>Employee ID</td>
<td>Month</td> 
</tr>
<tr>
<td>@Model.empID</td>
<td>@Model.Month</td> 
</tr>
</table>
更新

您可以将控制器保留为示例中的状态,并在Razor视图中执行此操作,如下所示:

@model IEnumerable<GetMonthlyReportResult>
@using EmployeeAttendance_app.Models

@{
    var item = Model.FirstOrDefault();
}

<h2>Employee Pay Slip</h2>

<table style="width:300px">
<tr>
<td>Employee ID</td>
<td>Month</td> 
</tr>
<tr>
<td>@item.empID</td>
<td>@item.Month</td> 
</tr>
</table>
@model IEnumerable
@使用EmployeeAttention_应用程序模型
@{
var item=Model.FirstOrDefault();
}
员工工资单
员工ID
月
@item.empID
@项目.月份

但是,由于您只需要一个项目,因此没有必要将该逻辑添加到Razor视图中。我认为,最好是尽可能把这类事情交给控制员。

这很有趣,因为他试图放在那里的信息都是参数。@ivowiblo哈哈,抓住了。我假设这个例子很简单,OP最终会扩展表格以包含模型中的其他数据。@ivowiblo和Jwatts:如果你们这些天才能告诉我你们在讨论什么?我做错什么了吗?想分享吗?你试过@jwatts1980的建议吗?它看起来不错。是的,它很管用,但我对“使用EmployeeAttention_app.Models”和“model GetMonthlyReportResult”之间的区别感到困惑。。。。。。。。。。。。为什么不用呢?
public ActionResult Generated_PaySlip(int? emplID, String month) 
{
    IEnumerable<GetMonthlyReportResult> PaySlip = DataContext.GetMonthlyReport(emplID, month).ToList();
    return View(PaySlip.FirstOrDefault());
}
@model IEnumerable<GetMonthlyReportResult>
@using EmployeeAttendance_app.Models

@{
    var item = Model.FirstOrDefault();
}

<h2>Employee Pay Slip</h2>

<table style="width:300px">
<tr>
<td>Employee ID</td>
<td>Month</td> 
</tr>
<tr>
<td>@item.empID</td>
<td>@item.Month</td> 
</tr>
</table>