我有: VIEWMVC3(剃鬚刀)的Json字符串化數據返回null(ArgumentNullException)
<script type="text/javascript">
function postData() {
var urlact = '@Url.Action("createDoc")';
var model = '@Html.Raw(Json.Encode(Model))';
alert(model);
$.ajax({
data: stringify(model),
type: "POST",
url: urlact,
datatype: "json",
contentType: "application/json; charset=utf-8",
success: function (result) {
window.location.href = '@Url.Action("CreateWordprocessingDocument","Movies")'
}
});
}
</script>
控制器
[HttpPost]
public void createDoc(string mov)
{
var movies = new JavaScriptSerializer().Deserialize<IEnumerable<Movie>>(mov);
//using movies...
}
模型
//[Serializable]
public class Movie
{
//Added Data Annotations for Title & Genre
public int ID { get; set; }
[Required(ErrorMessage = "Insert name")]
public string Title { get; set; }
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }
[Required(ErrorMessage = "Inserist genre")]
public string Genre { get; set; }
[DataType(DataType.Currency)]
public decimal Price { get; set; }
}
爲什麼當我從View(通過Ajax post函數)將字符串化數據發佈到Controller(createDoc)時,它會停止拋出ArgumentNullException(看起來模型傳遞爲空)? 任何解決方法/解決方案?
注意:如果沒有對模型進行字符串化處理,但是我試圖將其字符串化,導致另一種方式導致DateTime格式出現問題。
注/ 2:我也試着更換與IEnumerable的電影控制器動作的輸入參數串MOV,但它也不能工作。
與DateTime格式的問題是,當我從控制打印傳遞給控制器的日期iteself,它打印* 01/01/0001 00:00:00 *每個日期。我無法做任何修改/解析傳遞的Date的原因,因爲我直接在控制器操作的IEnumerable變量中收到它。 –
Jack88PD
如果問題出在JSON解串器上,可能JSON.NET會更好。 – napoleonss
嗨,@napoleonss謝謝你的回答。我試着使用JSON.NET與建立在網絡上的許多樣品,但我不能想通了。你能否在json.net上發佈一個示例代碼來解決問題及其解決方案?對不起,打擾你了,謝謝。 – Jack88PD