我正在使用ASP.Net Ajax的页面方法,我遇到的问题是枚举的定义没有被呈现。这就是我所拥有的:

public class Contact
{
    public string FirstName{get;set;}
    public IList<PhoneNumber> PhoneNumbers{get;set;}
}

public class PhoneNumber
{
   public string Number{get;set;}
   public PhoneNumberType {get;set;}
}

public enum PhoneNumberType
{
   Home,
   Work,
   Fax,
   Cell
}

然后我有一个简单的网络方法,例如:

[WebMethod]
public static Contact GetContact(Guid id)
{
   return ....;
}

在客户端,我最终得到一个MyNamespace.Contact类;但是,我没有 MyNamespace.PhoneNumber或MyNameSpace.PhoneNumberType。我发现,如果我明确添加只返回这些类型的虚假webmethods,那么就会呈现客户端类型。有没有办法强制将枚举强制转换为假网页方法?

我想要枚举,因为我需要遍历该List <!> lt; <!> gt;并基于PhoneNumberType做一些不同的事情。我宁愿不硬编码幻数或硬编码枚举。

有帮助吗?

解决方案

我需要将GenerateScriptType属性添加到方法签名中。

所以我的页面方法现在是

[WebMethod]
[GenerateScriptType(typeof(PhoneNumberType))]
[GenerateScriptType(typeof(PhoneNumber))]
public static Contact GetContact(Guid id)
{
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top