自定义转换函数抛出错误.

Zer*_*ide 0 kentico

这是我的转换函数调用:

<p><%# MyFunctions.getDocumentCategory(Eval("DocumentID"))%></p>
Run Code Online (Sandbox Code Playgroud)

这是功能:

public static string getDocumentCategory(int documentID)
{

    string category;

    StringBuilder sb = new StringBuilder();
    // Get document categories 
    var ds = CategoryInfoProvider.GetDocumentCategories(documentID, "CategoryEnabled = 1", null);
    // Check whether exists at least one category
    if (!DataHelper.DataSourceIsEmpty(ds))
    {

        // Loop thru all categories
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            sb.Append(Convert.ToString(dr["CategoryDisplayName"]) + ",");
        }
    }
    string content = sb.ToString();

    category = content.Split(',')[0];

    return category;
}
}
Run Code Online (Sandbox Code Playgroud)

这是错误:

MyFunctions.getDocumentCategory(int) has some invalid arguments. 
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一种替代形式的函数,它接受字符串而不是整数但它会抛出相同的错误.我已经验证了Eval("DocumentID")单独放置时的工作原理.有任何想法吗?

Doo*_*ake 5

Eval返回一个object.您需要将其转换为int,或更改函数以接受object,并将其转换objectint.

<p><%# MyFunctions.getDocumentCategory( Convert.ToInt32( Eval("DocumentID") ) )%></p>
Run Code Online (Sandbox Code Playgroud)

要么

public static string getDocumentCategory(object document)
{
     int documentID = Convert.ToInt32( document );

     etc...
}
Run Code Online (Sandbox Code Playgroud)