2011-10-17 53 views
0

我有一個簡單的形式與三個文本框和<canvas>在同一頁上,我必須驗證這三個字段,然後獲取值(如果驗證)發送到一個JavaScript函數在<canvas>元素內繪製圖片和一些文本。提交值之後,表單和文本框不會消失,因爲用戶可以用不同的值嘗試不同的結果。我以前做過其他表單,但從未嘗試過使用Ajax。我知道我可以使用客戶端驗證並通過jQuery獲取文本框值,但是我有更多的服務器端代碼正在運行,可以使用這三個值。我怎樣才能做到這一點?C# - 獲取文本框的值併發送到一個JavaScript函數

回答

1

在你的控制器中,創建一個方法來處理結果。我假設這隻用於記錄,並不需要實際返回數據。

public useResults(string value1, string value2) 
{ 
    // ... Do something with the results 

    return Json(true); 
} 

在你的觀點中,找出一種方法來構建上述動作的url。也許在一個隱藏的領域;

@Html.Hidden("useResultsUrl", Url.Action("useResults", "controllerName")) 

然後,在JavaScript,請將點擊事件的按鈕,因爲你可能已經(觸發您的JavaScript任務),並添加一個Ajax調用。

請注意,以下內容使用JQuery,但如果您願意,可以使用Microsoft AJAX;

$(function() { 
    $("#button").click(function() { 
     $.ajax({ 
      url: $("input[name='useResultsUrl']").val(), // Get the url from the hidden field 
      type: "POST", 
      dataType: "JSON", 
      data: $("input[type='text']").serialize() // Get the value of the text inputs and serialise them. 
     }); 
    }); 

    // ... do other stuff 
}); 
+0

這比我的答案要多得多 - 另外我忘了提到序列化表單數據。 +1 – StanK

+0

它的工作!謝謝! – Samuel

0

您認爲可以使用jQuery服務器Ajax調用 - 無論是使用JQuery.postJQuery.ajax - 你給控制器的動作對jQuery方法的URL,它會處理AJAX調用你。

然後,在你的控制器動作,返回一個JsonResult - 這串行化數據爲你爲JSON格式:

e.g. return Json(model); 

最後,實現在你看來JQuery的Ajax調用成功的功能 - 這WIL讓控制器返回的數據可供您隨意使用。

相關問題