存储 asp.net 字段无法从 asp.net 视图中存储过程



我正在使用存储过程来访问 asp.net 视图中的字段,我将数据库列放在HTML表中,除了一个字段"NetSalary"之外,它仍然有效。它无法访问,它说模型不包含它。我尝试了很多方法,但无法开始工作。

ALTER PROCEDURE [dbo].[GetMonthlyReport] @emplID INT = NULL,
    @month VARCHAR(50) = NULL, @BasicSalary int = null out ,@BSalaryHour int= Null out
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
        ---------------------------------------------------------------
        Declare @StartDate Date,  @EndDate Date, @mydate date, @TotalDays int, @TotalHours int
        Set @mydate = GETUTCDATE()
        Set @StartDate = (SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@mydate)-1),@mydate),101))
        Set @EndDate = (SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))),DATEADD(mm,1,@mydate)),101))
        Set @TotalDays =((DATEDIFF(dd, @StartDate, @EndDate) + 1)
          -(DATEDIFF(wk, @StartDate, @EndDate) * 1)
          -(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)) 
        Set @TotalHours  = (@TotalDays * 8)
        Set @BasicSalary = (Select BasicSalary from HrEmployee where EmplID=@emplID)
        Set @BSalaryHour = @BasicSalary / @TotalHours
        Select @BasicSalary as NetSalary, @BSalaryHour as SalaryPerHour
        ---------------------------------------------------------------
        Declare @No_Rows int
        Select No_Rows= count(*) FROM MonthlyRecord
        WHERE Month = @month AND EmplID = @emplID
        Return @No_Rows
    END --If block ends
    ELSE --Else block begins
    BEGIN
        RETURN 0
    END --Else block ends
END

控制器:

public ActionResult Generated_PaySlip(int? emplID, String month)
{
    if (!String.IsNullOrEmpty(Session["Admin"] as string))
    {
        int? basicSalary= 0;
        int? BSalaryPerHour = 0;
        IEnumerable<getmonthlyreportresult> PaySlip = DataContext.GetMonthlyReport(emplID, month, ref basicSalary, ref BSalaryPerHour).ToList();
        ViewBag.Month = Request.QueryString["Month"];
        //String NetSalary = DataContext.GetMonthlyReport(emplID, month).First()
        ViewBag.Salary = basicSalary;
        return View(PaySlip);
    }
    else
    {
        return RedirectToAction("IsAuth_Page", "Home");
    }

视图:

@using EmployeeAttendance_app.Models
@model IEnumerable<getmonthlyreportresult>
@{
    var Item = Model.FirstOrDefault();
}
<td>
    Name
</td>
<td>
    @Item.EmplName
</td>
<td>
    Designation
</td>
<td>
    @Item.DeptName
</td>
<tr style="border-removedsolid 3px black">
    <td>Total Working Time</td>
    <td>@Item.OverallTime</td>
    <td>Net Salary PKR</td>
    <td>@Item.NetSalary</td>
</tr>
<table><tbody><tr>

这个问题你已经问了两次,但我也会把我的答案贴在这里——

您应该明确指定字段,而不是使用 select * -

http://msdn.microsoft.com/en-us/library/dd193296%28v=vs.100%29.aspx

这可能会解决您的问题。

最新更新