2016-09-05 7 views
0

に直列化復元取得されていない私のモデルクラスはデータモデルは、ここでは、コントローラ

public class ProductModel 
{ 
    public Product {set;set;} // Product is one more class 
} 

である私は、部分的なビューを取得するためにJavaScriptコードの下に使用していますが、「モデル」のコントローラに直列化復元取得されていない...何をI行方不明ですか?部分的なページを呼び出し、ここで

$('.ShowProductModal').on('click', function() { 
    var model = $(this).data('singleproduct'); 
    //I can see data of variable model here in developer tool 

    $("#ProductModal").dialog({ 
     autoOpen: true, 
     position: { my: "center", at: "top+350", of: window }, 
     width: 1000, 
     resizable: false, 
     title: '', 
     modal: true, 
     open: function() { 
      $(this).load('ShowProductModal', model); 

     }, 
     buttons: { 

     } 
    }); 
    return false; 
}); 

をポップアップするためにjQueryを使用し

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
var jsonObject = serializer.Serialize(obj) 

<span data-singleproduct="@jsonObject" id="@mprodid" class="ShowProductModal">Find out more..</span> 

以下のようにHTML属性にデータを格納する

public PartialViewResult ShowProductModal(ProductModel product) 
{ 
    return PartialView("ProductModal", product); 
} 

製品はいつも来て私のコントローラのコードですヌルとして!

私はProductModel製品に変更すると、それが動作します...!誰かが私を助けますか?

public PartialViewResult ShowProductModal(Product product) 
{ 
    return PartialView("ProductModal", product); 
} 
+0

あなたは 'はconsole.log(モデル)を試してみました持っている;'あなたがモデルであるかを確認しますあなたのコントローラに渡していますか? –

答えて

1

あなたは

$(this).load('ShowProductModal', { product: model }); 

を試してみて、このようなあなたのメソッドを宣言する必要があります。

[HttpPost] 
public PartialViewResult ShowProductModal([FromBody] JObject data) 
{ 
    var product = data["product"].ToObject<ProductModel>(); 
    return PartialView("_SC5ProductModal", product); 
} 
+0

幸運にも、 'モデル'は 'ProductModel'に適合できません。私のシリアル化メソッドが間違っていますか? – codetoshare

+0

わかりませんが、 '$(this).load'は' HttpGet'を使用していませんか? – Stefan

+0

今はどうですか? あなたのモデルは分かりません。しかし、あなたが試すことができるのは、 'ProductModel product'を受け取って' JObject data'を受け取ってデバッグしようとするのではなく、 'JObject'で試したいのであれば' .load() 'を' {product:model} 'で呼んでください! –

関連する問題