2

私の Web メソッドは enum パラメータを受け取ります。クライアント側からintを送信してから列挙型にキャストできることを知っています。しかし、いつ、どこでこのキャスティングを行うのか、まったくわかりませんでした。次のサーバーメソッドがあるとします。

[WebMethod]
 public static void MethodThatReceivesAnEnum(enum myEnum)
 { }

AJAX 呼び出しは次のとおりです。

function enumTest(){
var enumArgument=1;
$.ajax({        
    type: "POST",
    url: "Ajax.aspx/MethodThatReceivesAnEnum",
    data: JSON.stringify({ myEnum:enumArgument }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success:function(){}});
}

JavaScript 関数またはサーバー メソッド、またはその両方で何かを行う必要がありますか?

4

2 に答える 2

1

通過number (int) from javascriptすると、サーバーで受信intして列挙型に変換できます。

public static void MethodThatReceivesAnEnum(int myEnumValue)
{ 
    YourEnum foo = (YourEnum)myEnumValue;
}

enumには整数互換型があり、値を送信して、正しいオブジェクトを取得できるかどうかを確認できます。

public static void MethodThatReceivesAnEnum(YourEnum myEnumValue)
{ 
      if(myEnumValue == YourEnum.SomeEquilantValue)
      {

      }
}
于 2012-12-25T06:43:07.257 に答える
0

驚いたことに、列挙型パラメーターの int だけを送信すると、問題なく機能しました。したがって、シリアライザーは独自にキャストを処理します。確認してから質問するべきでしたが、これが真実であるとは決して信じられません。

于 2012-12-25T07:00:46.553 に答える