2016-06-11 27 views
0

我想通過一個類別對象作爲我的子類別對象的參數到我的Asp.net控制器。但.net控制器總是將我的subcategory.SuperCategory對象設置爲null。

這是我SubCategoryobject:作爲參數從視圖發送對象到AngularJS的Asp.net控制器

public class SubCategory 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    [Required] 
    public Category SuperCategory { get; set; } 
} 

這裏我Asp.net控制器:

public void createSubCategory([FromBody]SubCategory subcategory) 
    { 
     System.Diagnostics.Debug.WriteLine("SuperCategoryName: " + subcategory.SuperCategory.Name); 
    } 

這是我的AngularJS功能:

$scope.savedataSubCategory = function (subcategory) { 
    $http.post('/AAAngular/createSubCategory', { Name: subcategory.Name, SuperCategory: {Id: subcategory.SuperCategory.Id, Name: subcategory.SuperCategory.Name } }) 
    .then(function successCallback(response) { 
     console.log(response); 
    } 
    , function errorCallback(response) { 
     console.log(response); 
    }) 
} 

和我查看部分:

 <input type="text" class="form-control" data-ng-model="subcategory.Name"> 
    <select data-ng-model="subcategory.SuperCategory"> 
      <option ng-repeat="category in categories">{{category}}</option> 
    </select> 
    <input type="button" value="Save" data-ng-click="savedataSubCategory(subcategory)"/> 

分類正確加載,這是{{subcategory.SuperCategory}}:

{"Id":63,"Name":"TestCat"} 

而且{{子類}}顯示爲:

{"SuperCategory":"{\"Id\":63,\"Name\":\"TestCat\"}"} 

而且我覺得這裏存在問題,由於反斜槓,它無法讀取它。當我只試圖傳遞一個類別的變量時,它可以工作,但我需要整個對象。
當我只嘗試傳遞類別名稱時,這就是我的子類別的外觀。

​​
+0

嘗試爲你的'post'調用添加'headers:{'Content-Type':'application/json'}。 – Claies

+0

@Claies沒有工作SuperCategory在我的.net控制器中仍然爲空。 – darron614

回答

0

首先,您需要構建您希望傳遞的子類別的對象。

var subCategory = {}; 
subCategory.Name = subcategory.Name; 
subCategory.SuperCategory = {} //this is your nested object 
subCategory.SuperCategory.Id = <assign whatever> 
... likewise fill other properties 

一旦這樣做,那麼你需要做幾個校正對這樣的發佈方法。不

$http({ 
     url: "route/createSubCategory", //change with correct one 
     dataType: 'json', 
     method: 'POST', 
     data: subCategory, 
     headers: { "Content-Type": "application/json" } 
    }).success(function (response) { 
     console.log(response); 
    }) 
    .error(function (error) { 
      alert(error); 
    }); 

在網頁API方面,它應該像

[Route("createSubCategory")] 
    [HttpPost] 
    public string createSubCategory([FromBody] SubCategory subCategory) 
    { 
     return "output"; 
    } 

只要注意在你的情況下,返回類型是無效,應be.Either返回基於您的need.Also相應的視圖模型或字符串我已用HttpPost屬性裝飾了此方法。

希望這會有所幫助。

相關問題