使用带参数的存储过程显示我的视图时遇到了一些问题。使用参数使用存储过程查看数据
这里是我的代码:
查看
@model IEnumerable<PEMCOLoan.DAL.Entities.spModels.getLoanWithTypes>
@{
ViewBag.Title = "List of Summary per Loan Types";
}
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#home">Educational Loan</a></li>
<li><a data-toggle="tab" href="#menu1">Petty Cash</a></li>
<li><a data-toggle="tab" href="#menu2">Business Loan</a></li>
</ul>
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<h3>Educational Loan</h3>
<table class="table">
<tr>
<th>Employee ID</th>
<th>Name</th>
<th>Loan Type</th>
<th>Principal</th>
<th>Interest</th>
<th>Total</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.EmployeeID)</td>
<td>@Html.DisplayFor(modelItem => item.FullName)</td>
<td>@Html.DisplayFor(modelItem => item.LoanTypeID)</td>
<td>@Html.DisplayFor(modelItem => item.PrincipalAmount)</td>
<td>@Html.DisplayFor(modelItem => item.Interest)</td>
<td>@Html.DisplayFor(modelItem => item.Total)</td>
</tr>
}
</table>
</div>
<div id="menu1" class="tab-pane fade">
<h3>Petty Cash</h3>
<table class="table">
<tr>
<th>Employee ID</th>
<th>Name</th>
<th>Loan Type</th>
<th>Principal</th>
<th>Interest</th>
<th>Total</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.EmployeeID)</td>
<td>@Html.DisplayFor(modelItem => item.FullName)</td>
<td>@Html.DisplayFor(modelItem => item.LoanTypeID)</td>
<td>@Html.DisplayFor(modelItem => item.PrincipalAmount)</td>
<td>@Html.DisplayFor(modelItem => item.Interest)</td>
<td>@Html.DisplayFor(modelItem => item.Total)</td>
</tr>
}
</table>
</div>
<div id="menu2" class="tab-pane fade">
<h3>Business Loan</h3>
<table class="table">
<tr>
<th>Employee ID</th>
<th>Name</th>
<th>Loan Type</th>
<th>Principal</th>
<th>Interest</th>
<th>Total</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.EmployeeID)</td>
<td>@Html.DisplayFor(modelItem => item.FullName)</td>
<td>@Html.DisplayFor(modelItem => item.LoanTypeID)</td>
<td>@Html.DisplayFor(modelItem => item.PrincipalAmount)</td>
<td>@Html.DisplayFor(modelItem => item.Interest)</td>
<td>@Html.DisplayFor(modelItem => item.Total)</td>
</tr>
}
</table>
</div>
</div>
我想在我看来是我想看看什么类型的贷款是它假定与工作台相处。例如,如果我有贷款类型1,2,3,如果贷款类型1将与Educational Loan
一起记录,则2将使用零用现金等等......这里是我工作的图片。 其余面板上的情况与此相同。
控制器
现在我有这个暂时
[HttpGet]
public IActionResult Index()
{
return View(_Context.Set<getLoanWithTypes>().FromSql("sp_GetLoanTypesWithPrincipal").AsNoTracking());
}
这里是我的参数部分代码
[HttpGet]
public IActionResult Index(getLoanWithTypes glwt)
{
return View(_Context.Set<getLoanWithTypes>().FromSql("sp_GetLoanTypesWithPrincipal @p0 = {0}, @p1 = {1}", glwt.EmployeeID.ToString(), glwt.LoanTypeID.ToString()).AsNoTracking());
}
我的Cuz一个小问题,它我不知道如何传球从视图的比例。我想要做的是我想在加载视图时为每个LoanTypeID
设置参数。或者只需单击每个面板,即可设置参数LoanTypeID
。
SQL: 参数: @empID AS INT = NULL, @loanID AS INT = NULL
查询:
SELECT
[EmployeeID] = emp.EmployeeID,
[FullName] = emp.FName + ' ' + emp.LName,
[LoanTypeID] = lt.LoanTypeID,
[PrincipalAmount] = (SELECT ISNULL(SUM((CAST(((lc.LoanAmount)/((dbo.fnNumberOfYears(CONVERT(VARCHAR(15), LoanDateStart, 101), CONVERT(VARCHAR(15), LoanPaymentDue, 101)) * 12) * 2)) AS DECIMAL(18,2)))),0) FROM LoanContract lc INNER JOIN LoanType lt ON lt.LoanTypeID = lc.LoanTypeID WHERE lc.LoanTypeID = @loanID AND lc.EmployeeID = emp.EmployeeID),
[Interest] = (SELECT ISNULL(SUM((CAST((((lt.InterestRate/100) * lc.LoanAmount)/((dbo.fnNumberOfYears(CONVERT(VARCHAR(15), LoanDateStart, 101), CONVERT(VARCHAR(15), LoanPaymentDue, 101)) * 12) * 2)) AS DECIMAL(18,2)))),0) FROM LoanContract lc INNER JOIN LoanType lt ON lt.LoanTypeID = lc.LoanTypeID WHERE lc.LoanTypeID = @loanID AND lc.EmployeeID = emp.EmployeeID),
[Total] = (SELECT ISNULL(SUM((CAST(((((lt.InterestRate/100) * lc.LoanAmount) + lc.LoanAmount)/((dbo.fnNumberOfYears(CONVERT(VARCHAR(15), LoanDateStart, 101), CONVERT(VARCHAR(15), LoanPaymentDue, 101)) * 12) * 2)) AS DECIMAL(18,2)))),0) FROM LoanContract lc INNER JOIN LoanType lt ON lt.LoanTypeID = lc.LoanTypeID WHERE lc.LoanTypeID = @loanID AND lc.EmployeeID = emp.EmployeeID)
FROM Employee emp
INNER JOIN Salary sal ON sal.EmployeeID = emp.EmployeeID
INNER JOIN LoanContract lc ON lc.EmployeeID = emp.EmployeeID
INNER JOIN LoanType lt ON lt.LoanTypeID = lc.LoanTypeID
LEFT JOIN LoanPayments lp ON lp.LoanID = lc.LoanID
LEFT JOIN LoanFrequency lf ON lf.LoanFrequencyID = lc.LoanFrequencyID
WHERE emp.EmployeeID IN (SELECT EmployeeID FROM Employee WHERE EmployeeID LIKE '%' + CASE WHEN ISNULL(@empID,0) <> 0 THEN CAST(ISNULL(@empID, 0) AS VARCHAR(15)) ELSE '' END + '%')
AND lc.LoanTypeID IN (SELECT LoanTypeID FROM LoanType WHERE LoanTypeID LIKE '%' + CASE WHEN ISNULL(@loanID,0) <> 0 THEN CAST(ISNULL(@loanID, 0) AS VARCHAR(15)) ELSE '' END + '%')
GROUP BY emp.EmployeeID, lt.LoanTypeID, emp.FName, emp.LName
ORDER BY emp.EmployeeID ASC
它所做的是,它为每个员工将获得他们当前的PrincipalAmount
,Interest
等等...如果PrincipalAmount
具有相同的LoanTypeID并且EmployeeID然后它将计算和总和。下面是示例图片
我对asp.net核心和ef核心有点新,也没有先进的知识。
希望这足以应付一切。任何好的参考读或建议将不胜感激!谢谢!