2017-08-11 56 views
1

接受我得到這樣的結果在我的視圖中創建JSON傳遞JSON是不是由控制器

header:{"ScheduledVisit":"08/02/2017 12:00 AM","Company":"fdsa","ContactPerson":"asfd","Phone":"asdf","Purpose":"fasd","Detail":"asdf"} 

我的模型看起來是這樣的:

public class ScheduleVisit 
{ 
    [Required(ErrorMessage = "* Required")] 
    public DateTime ScheduledVisit { get; set; } 
    public string Company { get; set; } 
    public string ContactPerson { get; set; } 
    public string Phone { get; set; } 
    public string Purpose { get; set; } 
    public string Detail { get; set; } 
} 

我通過我的數據,像這樣:

document.getElementById("btn_submit_schedule").addEventListener("click", function (event) { 
     event.preventDefault(); 
     if ($("#scheduledVisit").val().length === 0) { 
      $("#scheduledVisit").focus(); 
     } 

     var obj = {}; 
     obj.ScheduledVisit = document.getElementById("scheduledVisit").value; 
     obj.Company = document.getElementById("company").value; 
     obj.ContactPerson = document.getElementById("contactPerson").value; 
     obj.Phone = document.getElementById("phone").value; 
     obj.Purpose = document.getElementById("purpose").value; 
     obj.Detail = document.getElementById("detail").value; 
     console.log(obj); 
     addSchedule(obj); 
    }); 

    function addSchedule(data) { 
     $.ajax({ 
      type: "POST", 
      url: "@Url.Action("ScheduleVisit", "ScheduleVisit")", 
      data: {header: JSON.stringify(data)}, 
     success: function(result) { 
      alert(result); 
     }, 
     error: function(error) { 
      alert(error); 
     } 
    }); 
} 

and my controller looks like this: 

    [HttpPost] 
    public JsonResult ScheduleVisit(ScheduleVisit header) 
    { 

     return Json(false); 
    } 

當我在調試模式下運行並檢查我的控制器是否接受任何東西時,我在「header」參數上得到空值。請告訴我我錯在哪裏。

+0

@Vanna我認爲它的C#和ASP .NET – Muhammad

+0

C#和JavaScript。 Json(false)只是爲了輸出一些東西。 – Ibanez1408

+0

爲什麼你的課程名稱和操作名稱是「ScheduleVisit」? –

回答

1

剛更換data: {header: JSON.stringify(data)}data: data與當前的解決方案。

這非常複雜和手動的方式你可以用簡單的方法如下

分配名稱字段的每個元素爲同樣喜歡ID現在,

<input type="text" name="Company" value="" /> 

使用serializeArray

data: $("form").serializeArray(), 

希望這會有所幫助。

+0

謝謝。毫無疑問,這是一個更好的方法。 – Ibanez1408

0

問題是「data:{header:JSON.stringify(data)}」與控制器上的預期不同。

這應該工作。

 $.ajax({ 
      type: "POST", 
      url: "@Url.Action("ScheduleVisit", "ScheduleVisit")", 
      data: data, 
      ... 

控制器期望像的對象:

{ 
    "ScheduledVisit":"08/02/2017 12:00 AM", 
    "Company":"fdsa", 
    "ContactPerson":"asfd", 
    "Phone":"asdf", 
    "Purpose":"fasd", 
    "Detail":"asdf" 
} 
+0

我明白了......一旦我走到我的電腦前,我就會這樣做。我希望你的解決方案有效! – Ibanez1408

+0

但是,這裏有另一個問題,如果我刪除標題,我將如何能夠傳遞兩個參數。其實我必須傳遞2個參數。在代碼中,我只是說一個。 – Ibanez1408

+0

盡我所知你不能發送多個對象到HttpPost。您可以創建一個包含要發送和使用的對象的對象。 https://stackoverflow.com/questions/35430045/post-multiple-objects-to-web-api – Mueui