0

JSONオブジェクトをC#aspxページのWebメソッドに戻しています。

私のJavaScriptは次のようになります:

 return jsonItem = {
                     id: id,
                     title:  title,
                     registrationPage: {
                        registration: registration                              
                     }                                                  
                   }

このアイテムをaspxwebメソッドに渡します。

$.ajax({
          type: "POST",
          url: "SaveXML.aspx/SaveAs",
          data: JSON.stringify({ jsonItem : jsonItem }),
          contentType: "application/json; charset=utf-8",                
          dataType: "json",
          success: function (msg, textStatus) {
                alert(textStatus);
          },
    });

JSONペイロードは正常に送信されています

aspxページには、次のクラスがあります。

public class JSONItem
{
    public string Id { get; set; }
    public string Title { get; set; }  
    public RegistrationPage RegistrationPage { get; set; }           
}

public class RegistrationPage
{
     public string Registration { get; set; }
}

[WebMethod]
public static Policy Save(Policy policy)
{
}

これを構築しようとすると、コード分析エラーが発生します。これは理にかなっています。

CA1034:Microsoft.Design:「SaveXML.RegistrationPage」タイプをネストしないでください。または、外部から見えないようにアクセシビリティを変更します。

エラーを無視すると、コードは機能します。修飾子を変更しようとしましたが、RegistrationPageオブジェクトにデータが入力されませんでした。

コードを機能させて上記のエラーに準拠するにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

JSONItemWebMethodをローカライズすると、クラスRegistrationPage内にネストされているように見えます。Page正確には、コードは次のようになります。

public partial class MyPage : System.Web.UI.Page
{
    ...

    public class JSONItem
    {
        public string Id { get; set; }
        public string Title { get; set; }  
        public RegistrationPage RegistrationPage { get; set; }           
    }

    public class RegistrationPage
    {
         public string Registration { get; set; }
    }

    [WebMethod]
    public static Policy Save(Policy policy)
    {
    }

    ...
}

これらのクラスをクラス外に移動する必要がありPageます(もちろん、同じファイルに残すことができます)。

public class JSONItem
{
    public string Id { get; set; }
    public string Title { get; set; }  
    public RegistrationPage RegistrationPage { get; set; }           
}

public class RegistrationPage
{
    public string Registration { get; set; }
}


public partial class MyPage : System.Web.UI.Page
{
    ...

    [WebMethod]
    public static Policy Save(Policy policy)
    {
    }

    ...
}
于 2012-11-23T12:01:29.083 に答える