Sql 将存储过程列放入Razor代码中
我从MVC调用存储过程,它只返回一条记录 SP包含: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;
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>