簡體   English   中英

Ajax將復雜對象發布到MVC控制器

[英]Ajax Posting complex object to MVC controller

我想將一個復雜的對象發布到MVC控制器。

我的代碼發布到控制器

         var url = "/admin/addevent"
         $.ajax({
            type: "POST",
            contentType: 'application/json',
            dataType: "json",
            url: url,
            data: MyNewEvent,
            success: success
        });

        function success() {
            alert("Success");
        }

以下對象將被發布並在控制器上被識別並解析為該對象:

var MyNewEvent = JSON.stringify({
        ID: 0,
        Name: 'asdasd',
        Description: 'Description',
        DateTime: new Date().toISOString(),
        Owner: 1, Duration: 30,
        ReoccuringType: 0
    });

以下對象不

    var url = "/admin/addevent"
    var MyNewEvent = JSON.stringify({
        ID: 0,
        Name: 'asdasd',
        Description: 'Description',
        DateTime: new Date().toISOString(),
        Owner: 1, Duration: 30,
        ReoccuringType: 0,
        MembershipType: {
            ID: 1,
            Name: 'Test'
        }
    });

C#控制器

[HttpPost]
public JsonResult AddEvent(Event MyNewEvent)
{
    return Json(new { Success = true, Description = "Added" });
}

以下是應解析為的Event對象

public class Event
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public DateTime DateTime { get; set; }
    public User Owner { get; set; }
    public User Instructor { get; set; }
    public int MaxAttendance { get; set; }
    public int Duration { get; set; }
    public int ReoccuringType { get; set; }
    public MembershipType MembershipType { get; set; }
    public Organisation Organisation { get; set; }
}

public class MembershipType
{
    public int ID { get; set; }
    public string Name { get; set; }
    public MembershipType(BO.MembershipType MembershipType)
    {
        this.ID = MembershipType.ID;
        this.Name = MembershipType.Name;
    }

}

似乎控制器無法識別MemberShip對象。

謝謝

確定已經解決了這個問題,並且對於任何試圖從我上面提供的細節中解決問題的人來說,您將無法做到。 (我現在已經更新了)。 簡而言之,MembershipType對象需要一個無參數的構造函數,在該構造函數中,只有一個帶有參數的構造函數

public class MembershipType
{
    public int ID { get; set; }
    public string Name { get; set; }
    public MembershipType(BO.MembershipType MembershipType)
    {
        this.ID = MembershipType.ID;
        this.Name = MembershipType.Name;
    }

}

當我用提琴手檢查錯誤時,錯誤是來自服務器端的,“沒有為此對象定義無參數構造函數。”一旦我輸入了較少參數的構造函數,它就解決了我的問題。

public class MembershipType
{
    public int ID { get; set; }
    public string Name { get; set; }
    public MembershipType(BO.MembershipType MembershipType)
    {
        this.ID = MembershipType.ID;
        this.Name = MembershipType.Name;
    }

    public MembershipType()
    {
    }
}

請嘗試以下。 刪除JSON.stringify函數。

var MyNewEvent = {
        ID: 0,
        Name: 'asdasd',
        Description: 'Description',
        DateTime: new Date().toISOString(),
        Owner: 1, Duration: 30,
        ReoccuringType: 0,
        MembershipType: {
            ID: 1,
            Name: 'Test'
        }
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM