我有以下模型,視圖和控制器。MVC 3 - JSON串行器
模型
public class Person {
public string Name;// { get; set; }
public string Occupation { get; set; }
public int Salary { get; set; }
public int[] NumArr { get; set; }
}
查看
<input type="button" id="Test" value="Test" />
@section Javascript{
<script type="text/javascript">
$(function() {
$("#Test").click(function() {
var data = { Name: "Michael Tom", Occupation: "Programmer", Salary: 8500, NumArr: [2,6,4,9] };
var url = "Home/GetJson";
$.ajax({
url: url,
dataType: "json",
type: "POST",
data: data,
traditional: true,
success: function (result) {
}
});
});
});
</script>
}
控制器
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public JsonResult GetJson(Person person) {
return Json(......);
}
}
基於上述的那些代碼,我喜歡問三個問題。
如果我們使用的公共領域,而不是性能,串行不序列化JSON對象爲C#模式,使我總是空在控制器「名稱」字段。爲什麼會發生這種情況?
如果我將NumArr屬性的類型更改爲List,那麼它不起作用。我們如何使用List而不是int []?我知道我從JS傳遞數組。我們還可以通過JS的List嗎?
我在JavaScript代碼塊中使用「traditional:true」,因爲序列化不適用於「traditional:false」。我聽說jQuery有三個版本的Json序列化器。 ASP.NET MVC的序列化器只支持舊版本。這是真的嗎?
3.1。如果這是真的,我想知道你什麼時候能夠獲得支持jQuery最新版本的最新版MVC序列化器。
3.2。是否有任何方法可以註冊自定義Javascript序列化器,就像我們可以註冊自定義視圖引擎一樣?我的朋友建議我可以註冊自定義值提供程序或自定義模型聯編程序,並在自定義值提供程序/模型聯編程序中使用自定義JS序列化程序。
在此先感謝。如果你不清楚我的問題,請隨時告訴我。謝謝!
非常感謝您的詳細解答!謝謝! – 2012-04-02 15:56:57