ASP.Netページメソッド用にレンダリングされていないオブジェクト定義

StackOverflow https://stackoverflow.com/questions/627014

  •  06-07-2019
  •  | 
  •  

質問

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
}

次に、次のような単純なWebメソッドがあります。

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

クライアント側では、MyNamespace.Contactクラスになります。しかし、私は持っていません MyNamespace.PhoneNumberまたはMyNameSpace.PhoneNumberType。これらの型を返すだけの偽のWebメソッドを明示的に追加すると、クライアント側の型がレンダリングされることがわかりました。その列挙を強制的に偽のWebメソッド以外にレンダリングする方法はありますか?

列挙を必要とするのは、そのリストを反復処理する必要があるためです!<!> lt; <!> gt; PhoneNumberTypeに基づいて、何か異なることを行います。マジックナンバーをハードコードしたり、列挙型の定義をハードコードしたりすることは避けたい。

役に立ちましたか?

解決

GenerateScriptType属性をメソッドシグネチャに追加する必要があります。

だから私のページメソッドは今

です
[WebMethod]
[GenerateScriptType(typeof(PhoneNumberType))]
[GenerateScriptType(typeof(PhoneNumber))]
public static Contact GetContact(Guid id)
{
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top