2011-10-26 111 views
0

我實現了一個基於斯科特Guthrie的文章 http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspxAsp.net MVC 3 - 控制器的動作沒有看到JSON對象

但我的控制器操作認爲傳遞給它的對象是空小試,甚至儘管我使用JSON.stringify並將數據打包到其中 - 我完全按照文章進行了操作。

在我的HTML

@using (Html.BeginForm("SomeAction", "ControllerName", FormMethod.Post, new { id = "FormID" })) { 


    <div class="editor-field">@Html.EditorFor(model => model.Date)</div> 
    <div class="editor-field">@Html.EditorFor(model => model.Id)</div>  
    <div class="editor-field">@Html.EditorFor(model => model.Name)</div> 


    <input type="button" value="save" onclick="Save();" /> 
} 

在我的模型文件

namespace MyNamespace.Models 
{ 
    public class MyModel 
    { 
     public string Id { get; set; } 
     public string DateReceived { get; set; } 
     public string Name { get; set; } 
    } 
} 

在我的js

function Save() { 

    var myModelObj = { Id: $("#Id").val(), 
       DateReceived: $("#DateReceived").val(), 
       Name: $("#Name").val() 
    }; 


$.ajax({ 

    type: "POST", 
    url: "/ControllerName/SomeAction", 
    data: JSON.stringify(myModelObj), 
    cache: false, 
    // dataType: "json", 

    success: function (data) { 

     alert('success!'); 
    }, 

    error: function (XMLHttpRequest, textStatus, errorThrown) { 

     alert('error'); 
     alert(XMLHttpRequest + "<br />" + textStatus + "<br />" + errorThrown); 

    } 

}); 

在我的控制器

[HttpPost] 
    public ActionResult SomeAction(MyModel modelObj) 
    { 
     using (StreamWriter sw = new StreamWriter("/test.txt")) 
     { 

      sw.Write(modelObj.Id); 
     } 
     return null; 
    } 

當我在sw.Write ...語句中放置斷點時,modelObj.Id爲null。

我錯過了什麼或者是否還有其他需要連線的東西?謝謝!

回答

3

我認爲你需要將contentType和dataType選項添加到你的ajax調用中。

contentType: 'application/json, charset=utf-8', 
dataType: 'json', 
+0

nope still null。我猜承諾的功能從來沒有發生過?任何人都可以詳細說明嗎? – sarsnake

+0

不。功能絕對在那裏。我使用它很多。讓我仔細看看你的代碼。 – BZink

+0

我也注意到sw.Write(「一些測試文本」);也不管用......不知道這是否有關係。它看起來像這個控制器/行動什麼都沒做,但執行絕對去那裏,因爲我把斷點 – sarsnake

相關問題