从dataabse但不可见现场访问 [英] accessing field from dataabse but not visible
本文介绍了从dataabse但不可见现场访问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用的是存储过程来访问asp.net视图字段,我把数据库列HTML表格,这是只有一个行业例外,NetSalaryworkign。它不能被访问,它说,模型不包含它。我试了很多办法,但不能得到工作。
ALTER PROCEDURE [DBO]。[GetMonthlyReport] @emplID INT = NULL,
@month VARCHAR(50)= NULL,@BasicSalary INT =空出来,@ BSalaryHour INT =空出
如
开始
- SET NOCOUNT ON加入到prevent额外的结果集,从
- 与SELECT语句的干扰。
SET NOCOUNT ON; IF(@emplID不是null,@month IS NOT NULL) - - 如果块开始
开始
选择 *
从MonthlyRecord
WHERE月份= @month AND EMPLID = @emplID -------------------------------------------------- -------------
声明@StartDate日期,@EndDate日期,@mydate日期,@TotalDays INT,INT @TotalHours 设置@mydate = GETUTCDATE()
设置@StartDate =(选择Convert(VARCHAR(25),DATEADD(DD, - (DAY(@mydate)-1),@数值指明MyDate),101))
设置@EndDate =(选择Convert(VARCHAR(25),DATEADD(DD, - (DAY(DATEADD(毫米,1,@数值指明MyDate))),DATEADD(毫米,1,@数值指明MyDate)),101))
设置@TotalDays =((DATEDIFF(DD,@StartDate,@EndDate)+ 1)
- (DATEDIFF(WK,@StartDate,@EndDate)* 1)
- (CASE WHEN DATENAME(DW,@StartDate)='周日'THEN 1 ELSE 0 END))
集@TotalHours =(@TotalDays * 8)
设置@BasicSalary =(从HrEmployee选择BasicSalary,其中EMPLID = @ EMPLID)
设置@BSalaryHour = @BasicSalary / @TotalHours
选择@BasicSalary为NetSalary,@BSalaryHour为SalaryPerHour
-------------------------------------------------- ------------- 声明@No_Rows INT
选择No_Rows = COUNT(*)FROM MonthlyRecord
WHERE月份= @month AND EMPLID = @emplID
返回@No_Rows
END - - 如果块结束
ELSE --Else块开始
开始
返回0
END --Else块结束
结束
控制器动作:
公众的ActionResult Generated_PaySlip(INT?EMPLID,弦乐月)
{
如果(!String.IsNullOrEmpty(会话[管理员]作为字符串))
{
诠释? basicSalary = 0;
诠释? BSalaryPerHour = 0;
IEnumerable的< getmonthlyreportresult>工资单= DataContext.GetMonthlyReport(EMPLID,月,裁判basicSalary,裁判BSalaryPerHour).ToList();
ViewBag.Month =的Request.QueryString [月];
//字符串NetSalary = DataContext.GetMonthlyReport(EMPLID,月)。首先()
ViewBag.Salary = basicSalary;
返回视图(工资单);
}
其他
{
返回RedirectToAction(IsAuth_Page,家);
}
查看:
@using EmployeeAttendance_app.Models
@model IEnumerable的< getmonthlyreportresult>@ { 变种物品= Model.FirstOrDefault();
}&所述; TD>
名称
< / TD>
&所述; TD>
@ Item.EmplName
< / TD>
&所述; TD>
指定
< / TD>
&所述; TD>
@ Item.DeptName
< / TD>< TR风格=BORDER-removedsolid的3px黑>
< TD>工作总时间与LT; / TD>
< TD> @ Item.OverallTime< / TD>
< TD>净工资PKR< / TD>
< TD> @ Item.NetSalary< / TD>
< / TR>
<表><&TBODY GT;< TR>
解决方案
您应该指定明确的领域,而不是使用select * -
http://msdn.microsoft。 COM / EN-US /库/ dd193296%28V = VS.100%29.aspx
这可能会解决你的问题。
i am using a store procedure to access field in asp.net View, i am putting db columns in HTML table, it's workign except for one field, 'NetSalary'. It can't be accessed, it says that model doesn't contain it. i tried many ways but couldn't get to work.
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
Controller Action:
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");
}
View:
@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>
解决方案
You should specify the fields explicitly rather than use select * -
http://msdn.microsoft.com/en-us/library/dd193296%28v=vs.100%29.aspx
That might fix your problem.
这篇关于从dataabse但不可见现场访问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文