Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kentico 自定义转换函数抛出错误。_Kentico - Fatal编程技术网

Kentico 自定义转换函数抛出错误。

Kentico 自定义转换函数抛出错误。,kentico,Kentico,这是我的转换函数调用: <p><%# MyFunctions.getDocumentCategory(Eval("DocumentID"))%></p> 这就是错误: MyFunctions.getDocumentCategory(int) has some invalid arguments. 我尝试了另一种形式的函数,它接受字符串而不是整数,但它抛出了相同的错误。我已经验证了Eval(“DocumentID”)单独放置时是否正常工作。有什么想法吗?E

这是我的转换函数调用:

<p><%# MyFunctions.getDocumentCategory(Eval("DocumentID"))%></p>
这就是错误:

MyFunctions.getDocumentCategory(int) has some invalid arguments. 

我尝试了另一种形式的函数,它接受字符串而不是整数,但它抛出了相同的错误。我已经验证了
Eval(“DocumentID”)
单独放置时是否正常工作。有什么想法吗?

Eval返回一个
对象。您需要将其转换为
int
,或者更改函数以接受
对象
,然后将该
对象
转换为
int

<p><%# MyFunctions.getDocumentCategory( Convert.ToInt32( Eval("DocumentID") ) )%></p>

感谢Doozer的精彩解释和示例

第二种方法——接受对象并在自定义函数内进行转换——可能更好地保持转换代码的整洁。结果是一样的

只需添加一点-您可以使用Kentico的ValidationHelper进行转换,例如:

转变:

<%# MyFunctions.getDocumentCategory(Eval("DocumentID"))%>
public static string getDocumentCategory(object document)
{
     int documentID = Convert.ToInt32( document );

     etc...
}
<%# MyFunctions.getDocumentCategory(Eval("DocumentID"))%>
public static string getDocumentCategory(object docID)
{
   int documentID = ValidationHelper.GetInteger(docID, 0); //0 is the default value
   ...