2012-07-05 50 views
1

我想從視圖到控制器使用$ .ajax方法接收json對象,但我不知道爲什麼控制器中的接收對象顯示空數據。

這是我的代碼。

$("#Save").click(function (e) { 

     $.ajax({ url: "Home/Save", 
     type: "POST", 
     datatype:'json',     
     data: ({movies:movies}) 
     }); 
}); 

其中電影是JavaScript的數組,它包含

({ 
    Name:"DDLJ",Stars:"SRK",Director:"Yashraj",Year:"2012" 
    }, {Name:"K3G",Stars:"SRK",Director:"Karan",Year:"2010"} 
) 

和我的控制器的代碼是:

public string Save (List<MovieDB> movies) 
     { 
     return ""; 
     } 

其中MovieDB是具有屬性我的模型類

public class MoviesDB 
    { 
     //public int MoviesID { get; set; } 
     public string Name { get; set; } 
     public string Stars { get; set; } 
     public string Director { get; set; } 
     public DateTime Year { get; set; } 
    } 

請su讓我有更好的方法來從視圖到控制器接收json數據。

Actully我嘗試從視圖發送JavaScript的數組對象在我的陣列碼是

<script type="text/javascript"> 
    var cnt = 1; 
     var cnt2 = 1; 
     var i; 
     var movies = []; 

    movies.push({ Name: $("#txtMovieName").val(), Stars: $("#txtStarCasts").val(), Director: $("#txtDirector").val(), Year: $("#txtYear").val(), Index: cnt++ }); 

        $("#modelTable").empty(); 

        $("#modelTemplate").tmpl(movies).appendTo($("#modelTable")); 

        $("#txtMovieName").val(""); 
        $("#txtStarCasts").val(""); 
        $("#txtDirector").val(""); 
        $("#txtYear").val(""); 
        $("#txtMovieName").focus(); 
        e.preventDefault(); 
      }); 

    $("#Save").click(function (e) { 

      //var jm = $.toJSON(movies); 
      $.ajax({ url: "Home/Save", 
       type: "POST", 

       data: ({movies:movies}) 
       // contentType: 'application/json; charset=utf-8' 
      }); 
     }); 

    </script> 

現在我想發送電影JavaScript的數組對象使用保存()控制器的操作方法控制操作方法任何方式像JSON或其他請給我一些建議...

+0

我已經發布了一個答案,但是當我再次閱讀你的問題時,我想我的答案是不正確的。 提交後,您是否將視圖中的數據從您的視圖中獲取到控制器?因爲那很容易解決你的問題。 – Sllix 2012-07-05 12:57:48

回答

0
List<xyztype> lstid = new JavaScriptSerializer().Deserialize<List<xyztype>>(IDlist); 

爲我工作

這裏xyztype是我收集類類型和IDLIST是我的JSON從視圖objectstring使用javascriptserializer()。解串器<到控制器的操作方法

>我們可以轉換JSON字符串到我們的定製或系統數據類型的對象

例如:

List<string> lstid = new JavaScriptSerializer().Deserialize<List<string>>(IDlist); 
1

這不是一個正確的JSON。您可以檢查這在JSONLint

這裏是正確的JSON:

[ 
    { 
     "Name": "DDLJ", 
     "Stars": "SRK", 
     "Director": "Yashraj", 
     "Year": "2012" 
    }, 
    { 
     "Name": "K3G", 
     "Stars": "SRK", 
     "Director": "Karan", 
     "Year": "2010" 
    } 
] 

如果仍存在錯誤,讓我知道。

0

也許這是一個更好的答案,如果你想在發佈後將你的數據存入你的控制器。

//For going to your view. 
public ActionResult Create() 
{ 
    MoviesDB model = new MoviesDB(); 
    return View("Create", model); 
} 


[HttpPost] 
public ActionResult Create(MoviesDB model) 
{ 
    if (ModelState.IsValid) 
    { 
     //Here you can use your model param 
     //with the filled in values of your view. 

     return RedirectToAction("Index"); 
     //when everything works fine, go to this view. 
    } 
    else 
    { 
     return RedirectToAction("Index"); 
     //when there is a problem, go to this view. 
    } 

    return View("Index"); 
} 

你不需要jQuery從你的視圖中使用你的數據。

相關問題