Преобразование значения Eval из int в string

у меня есть целое число, хранящееся в моей базе данных, которое мне нужно преобразовать string.

Это моя попытка 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

я использовал "SalaryType" в Eval, поскольку это параметр, который имеет информацию из базы данных. Я не совсем понимаю, что делаю не так..

3 ответов


хотя вы знаете, что


попробуйте преобразовать в int на оценку часть;

Convert.ToInt32(Eval("SalaryType"))

Eval вероятно object в качестве возвращаемого типа.


Я предпочитаю отправлять DataItem на код позади, и там получить данные как:

<%#RenderSalaryType(Container.DataItem)%>

и на код

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

    // rest of your code
}