我的数据库中存储了一个整数,我需要转换字符串。
这是我对Eval的尝试:
<%# ChangeSalaryType(Eval("SalaryType")) %>
这是我对该功能的尝试:
public static string ChangeSalaryType(int salaryType)
{
string salaryTime = string.Empty;
if (salaryType == 1)
{
salaryTime = "per hour";
}
else if (salaryType == 2)
{
salaryTime = "per week";
}
else if (salaryType == 3)
{
salaryTime = "per annum";
}
return salaryTime;
}
但是我收到了这些错误:
Argument 1: cannot convert from 'object' to 'int'
Error 2 The best overloaded method match for 'controls_allPlacements.ChangeSalaryType(int)' has some invalid arguments
Error 4 The best overloaded method match for 'controls_allPlacements.ChangeSalaryType(int)' has some invalid arguments
我在Eval中使用了“SalaryType”,因为那是包含来自数据库的信息的参数。我不完全确定我做错了什么..
答案 0 :(得分:10)
即使你知道你的aspx中SalaryType
字段是int
,它也会在Eval()之后被转换为object
。像这样做一个明确的演员:
<%# ChangeSalaryType(Convert.ToInt32(Eval("SalaryType"))) %>
答案 1 :(得分:1)
尝试在 Eval 部分转换为int
;
Convert.ToInt32(Eval("SalaryType"))
Eval
可能会返回object
作为返回类型。
答案 2 :(得分:0)
我更喜欢在代码后面发送DataItem,并获得数据:
<%#RenderSalaryType(Container.DataItem)%>
以及
背后的代码protected string RenderSalaryType(object oItem)
{
int salaryType = (int)DataBinder.Eval(oItem, "SalaryType");
// rest of your code
}