7

我有一个整数存储在我的数据库中,我需要转换字符串。

这是我对 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”,因为它是包含来自数据库的信息的参数。我不完全确定我做错了什么..

4

3 回答 3

11

即使您知道该SalaryType字段将是int您的 aspx 中的一个字段,它也会object在 Eval() 之后被强制转换。像这样进行显式转换:

<%# ChangeSalaryType(Convert.ToInt32(Eval("SalaryType"))) %>
于 2013-04-07T15:21:12.697 回答
1

尝试int在您的Eval部分转换为;

Convert.ToInt32(Eval("SalaryType"))

Eval可能object作为返回类型返回。

于 2013-04-07T15:22:07.007 回答
0

我更喜欢在后面的代码上发送 DataItem,然后将数据获取为:

<%#RenderSalaryType(Container.DataItem)%>

和后面的代码

protected string RenderSalaryType(object oItem)
{
    int salaryType = (int)DataBinder.Eval(oItem, "SalaryType");

    // rest of your code
}
于 2013-04-07T15:35:17.620 回答