0

私はいくつかのサブクラスを含む責任クラスを持っています。以下はクラスです:-

public class Responsibility
{
    private Frequency _FrequencyInfo = new Frequency();
    private ResponsibilityCategory _CategoryInfo = new ResponsibilityCategory();
    private Status _StatusInfo = new Status();

    public int ResponsibilityId { get; set; }
    public string ResponsibilityName { get; set; }
    public string Description { get; set; }
    public Frequency FrequencyInfo
    {
        get { return _FrequencyInfo; }
        set { _FrequencyInfo = value; }
    }
    public ResponsibilityCategory CategoryInfo
    {
        get { return _CategoryInfo; }
        set { _CategoryInfo = value; }
    }
    public Status StatusInfo
    {
        get { return _StatusInfo; }
        set { _StatusInfo = value; }
    }
}

以下は、リストをバインドするために使用しているコードです。しかし、クラスのすべての要素を取得しています。クラスから2つの要素が欲しいだけです。

Responsibility newResponsibilty = new Responsibility();
        newResponsibilty.ResponsibilityId = ResponsibilityId;
        new iNGRID_Data.Ops.DataMethods().dbrGetResponsibilityDetailsInSpecifiedResponsibilty(ref newResponsibilty, ResponsibilityId, ref err);
        List<Responsibility> listResponsibilty = new List<Responsibility>();
        listResponsibilty.Add(newResponsibilty);

        JavaScriptSerializer jsonserialize = new JavaScriptSerializer();
        string result = jsonserialize.Serialize(listResponsibilty);
        return Content(result);

このリストを、ResponsibiltyName と Description の 2 つのオブジェクトだけでシリアライズしたいと考えています。提案してください。

4

1 に答える 1

1

それらを手動で JSON シリアライズしないでください。Json の結果を返すことで、フレームワークに任せます。また、リストは必要ありません。関心のあるプロパティを含む匿名オブジェクトを返すことができます。

public ActionResult SomeAction()
{
    Responsibility newResponsibilty = new Responsibility();
    newResponsibilty.ResponsibilityId = ResponsibilityId;
    new iNGRID_Data.Ops.DataMethods().dbrGetResponsibilityDetailsInSpecifiedResponsibilty(ref newResponsibilty, ResponsibilityId, ref err);
    var result = new
    {
        name = newResponsibilty.ResponsibiltyName, 
        description = newResponsibilty.Description
    };
    return Json(result, JsonRequestBehavior.AllowGet);
}

AJAX 成功コールバック内で、これらのプロパティを読み取ることができます。

success: function(result) {
    // you could use result.name and result.description here
}
于 2012-09-18T11:17:52.050 に答える