2011-11-02 74 views
1

我環顧四周,無法找到一個回答我的問題。如果顯而易見的話,jquery和mvc3的新手很抱歉。JQuery.Post()調用動作導致控制器,MVC 3

$.post('@Url.Action("EditPost", "Task")', { "fc": document.getElementById("#myForm")}); 

我想保存對行中的更改並刷新局部視圖而不回發整個頁面。

通過上面的代碼行,我試圖在控制器中執行一個操作結果,但它似乎尋找一個名爲EditPost的視圖,而不是在任務控制器中的一個名爲EditPost的方法,這正是我想要做的。有人可以幫助我嗎?

+0

你會得到什麼錯誤? – SLaks

+0

你可以發佈EditPost方法簽名嗎? – Joe

回答

4

嘗試使用這樣的:

$.post('@Url.Action("EditPost", "Task")', $('#myForm').serialize(), function(data){ 
    $('#form').children().remove().append(data); 
}, 'html'); 

您定義指定它返回的數據類型是HTML(局部視圖)和document.getElementById("#myForm")不可能讓你任何東西,因爲除非你使用jQuery選擇不使用#,即使你刪除#你會得到表單元素,而不是它的內容。因此,您使用$('#myForm').serialize()將所有內容序列化爲帖子或獲取數據。

+0

感謝guilherme問題來自我的表單,而不是序列化它。 404 WAS來自我想要訪問的控制器,因爲表單值爲空! – DevDave

+0

沒有問題,如果您的表單具有該方法要求的值,則可以使用該解決方案。 –

2

的document.getElementById( 「#myForm會」)????

如果你想使用提交整個表單AJAX:

$('#myForm').submit(function() { 
    $.ajax({ 
     url: this.action, 
     type: this.method, 
     data: $(this).serialize(), 
     success: function(result) { 
            alert('success');   } 
    }); 
    return false; 
}); 

這是假設你的控制器動作將一個包含多個屬性從的輸入字段的值綁定到一個完整的視圖模型形式:

public ActionResult EditPost(MyViewModel model) 
{ 
    ... 
} 

或一些輸入的唯一的值:

var url = '@Url.Action("EditPost", "Task")'; 
var fc = $('#fc').val(); 
$.post(url, { fc: fc }, function(result) { 
    alert('success'); 
}); 

這是假設你的控制器動作發生fc作爲參數:

public ActionResult EditPost(string fc) 
{ 
    ... 
} 
+0

我現在不能測試,但我90%肯定,即使你用'fc'參數發送整個表格後會與這兩個動作的工作,除非'fc'它的形式之外。 –

相關問題