2012-07-05 107 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从你的视图中使用你的数据。

相关问题