如何在C#中从对象中获取值

8

我的Json代码如下:

ListOrderDetails.push({ // Add Order Details to array                  
                "OrderType": OrderType,
                "CaseNumber": CaseNumber,
                "OrderNumber": OrderNumber,
                "OrderStatus": OrderStatus,
                "Reason": Reason,
                "Coments": Coments
            });

var Params = { "Geo": Geography, "GeoId": GeographyID, "CountryCode": CountryCode, "Segment": Segment, "SubsegmentID": SubSegmentID, "OrderDetails": ListOrderDetails };
        //var Params = { "Geo": Geography, "GeoId": GeographyID, "CountryCode": CountryCode, "Segment": Segment, "SubsegmentID": SubSegmentID };
        $.ajax({
            type: "POST",
            url: "MyDataVer1.aspx/SaveManualEntry",
            contentType: "application/json",
            data: JSON.stringify(Params),
            dataType: "json",
            success: function(response) {
                alert(response);
            },
            error: function(xhr, textStatus, errorThrown) {
                alert("xhr : " + xhr);
                alert("textStatus : " + textStatus);
                alert("errorThrown " + errorThrown);
            }
        });

c# webmethod is

[WebMethod]
public static int SaveManualEntry(string Geo, int GeoId, string CountryCode,
                                  string Segment, string SubsegmentID, 
                                  object[] OrderDetails)
{

    try
    {
        int TotalOrderCount = 0;
        int Successcount = 0;               
        return Successcount;

    }
    catch (Exception ex)
    {
        throw ex;
    }

}

如何从对象 orderDetails 中获取值。我无法使用索引。

1
你的格式非常糟糕。在发布问题之前,请使用适当的编辑工具和预览功能。 - J. Steen
1
是的。当然。对不起给您带来不便。 - Ramesh
不用道歉,下次只要做好就行了。=) - J. Steen
为什么你要接收一个 object[] 而不是创建一个代表你的实体的类型? - Yuval Itzchakov
您可以使用LINQ来更改格式。 - Jonathan Camilleri
2个回答

5
您可以使用反射:
foreach(var order in orderDetails)
{
    string orderType = (string)order.GetType().GetProperty("OrderType").GetValue(order);
    // other properties
}

3
你首先需要创建一个订单详情对象:
public class OrderDetail
{
    public string OrderType { get; set; }
    public string CaseNumber { get; set; }
    public string OrderNumber { get; set; }
    public string OrderStatus { get; set; }
    public string Reason { get; set; }
    public string Coments { get; set; }
}

然后将您的Web方法更改为以下内容:
[WebMethod]
public static int SaveManualEntry(string Geo, int GeoId, string CountryCode,
                                  string Segment, string SubsegmentID, 
                                  List<OrderDetail> OrderDetails)
{

    try
    {
        int TotalOrderCount = 0;
        int Successcount = 0;               
        return Successcount;

    }
    catch (Exception ex)
    {
        throw ex;
    }

}

改为接受 List<OrderDetails>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接