C# “如何修复”;详情页“;数据类型错误
我正在设置一个包含元素详细信息的新页面,并希望在页面中支持nvarchar值。我需要在哪里更改代码 我的控制器C# “如何修复”;详情页“;数据类型错误,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,我正在设置一个包含元素详细信息的新页面,并希望在页面中支持nvarchar值。我需要在哪里更改代码 我的控制器 public ActionResult Details(string id) { try { if (string.IsNullOrEmpty(id)) { return RedirectToAction("TimeS
public ActionResult Details(string id)
{
try
{
if (string.IsNullOrEmpty(id))
{
return RedirectToAction("TimeSheet", "AllTimeSheet");
}
MainTimeSheetView objMT = new MainTimeSheetView();
objMT.ListofVacationsDayoffs = _ITimeSheet.GetVacationsbyTimeSheetMasterID(Convert.ToInt32(id));
objMT.TimeSheetMasterID = Convert.ToInt32(id);
return View(objMT);
}
catch (Exception)
{
throw;
}
}
我的班级
public class GetVacations
{
public string Vacations { get; set; }
}
我的列表与查询过程
public List<GetVacations> GetVacationsbyTimeSheetMasterID(int TimeSheetMasterID)
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TimesheetDBEntities"].ToString()))
{
con.Open();
try
{
var param = new DynamicParameters();
param.Add("@TimeSheetMasterID", TimeSheetMasterID);
var result = con.Query<GetVacations>("Usp_GetVacationsbyTimeSheetMasterID", param, null, true, 0, System.Data.CommandType.StoredProcedure).ToList();
if (result.Count > 0)
{
return result;
}
else
{
return new List<GetVacations>();
}
}
catch (Exception)
{
throw;
}
}
}
存储过程返回什么?过程返回一列nvarchar值,我现在将这些值转换为整数,因为页面停止使用nvarchar值。如果没有,则显示错误页面。我确信这就是列的数据类型的原因,如果我从nvarchar改回int,它将工作,页面将出现。请提供
MainTimeSheetView
class1我看到的问题是,ListofVacationsDayoffs
从未定义。您指定了一个值,但从未定义它。我建议在模型类中使用构造函数将其设置为新列表,或者在尝试赋值之前将其设置为新列表。当您说“仅当我将值转换为int时它才工作”是什么意思?存储过程返回什么?过程返回一列nvarchar值,我现在将这些值转换为整数,因为页面停止使用nvarchar值。没有任何内容,只显示错误页面。我确信这就是列的数据类型的原因,如果我从nvarchar改回int,它将工作,页面将出现。请提供MainTimeSheetView
class1我看到的问题是,ListofVacationsDayoffs
从未定义。您指定了一个值,但从未定义它。我建议在模型类中使用构造函数将其设置为新列表,或者在尝试赋值之前将其设置为新列表。当你说“只有当我把我的值转换成int时它才起作用”时,你是什么意思?
@model WebApp.Models.Model
foreach (var item in Model.ListofVacationsDayoffs)
{
<td><b>@Html.DisplayFor(modelItem => item.Vacations)</b></td>
}
public class MainTimeSheetView
{
public List<GetVacations> ListofVacationsDayoffs { get; set; }
}
SELECT
CASE WHEN Hours = 1 THEN 0
WHEN Hours = 2 THEN 0
WHEN Hours = 3 THEN 0
WHEN Hours = 4 THEN 0
WHEN Hours = 8 THEN 8
ELSE 0
END
AS Vacations
FROM [TimeSheetDetails] t
where TimeSheetMasterID =@TimeSheetMasterID