将Eval的值从int转换为string

时间:2013-04-07 15:18:38

标签: c# asp.net eval

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

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

3 个答案:

答案 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
}