2016-05-11 79 views
0

我面臨一個問題。Javascript數據發送到控制器在Ajax窗體提交

我已經在div中的webform中放置了幾個下拉和輸入控件。 當我點擊添加按鈕,上面的div生成使用javascript和 所有控件將通過JavaScript動態生成與不同的ID 和追加使用下面。

$("#xra-products-wrap").append(strVar).html(); 

當我在頁面上點擊Save按鈕,它是一個Ajax提交

@(Ajax.Beginform(){} 

在這種情況下,我如何從控制得到的值,並將其發送到控制器。當我點擊添加按鈕時,我可以將值存儲在JavaScript中。但點擊保存我怎麼能將數據傳遞給控制器​​。我可以將數據存儲在JavaScript中。但在提交表單時,我無法將其發送到表單。

請你幫忙。

回答

0

我假設你想從表單元素中獲取信息。

var dropdown = $("select[name='dropdown']").val(); 
var text = $("input[name='text']").val(); 

您應該能夠以這種方式獲得這些字段的價值。有了這些值,您應該可以對服務器進行ajax調用。

1

您需要使用AjaxOptions參數調用@Ajax.BeginForm來驅動其行爲。此參數的Url屬性指定AJAX請求將發送到的位置(在這種情況下,我假定它將URL路由到控制器操作方法)。參數的UpdateTargetId屬性指定哪個客戶端DOM元素將從操作方法(例如可能是PartialViewResult)的返回值接收呈現的HTML。

您還可以設置參數AjaxOptions中的OnSuccessOnFailure屬性來指定分別在成功和失敗時必須執行的JavaScript代碼。

@Ajax.BeginForm將生成代碼提交表單值(甚至是那些從動態添加元素)到指定的URL,處理該響應,並再現由指定的DOM元素內的數據有效載荷(這將是HTML如果返回PartialViewResultUpdateTargetId。因此,您不必在JavaScript中存儲表單值,也不必手動將它們提交給控制器操作。

說,您需要在提交值後刷新表單。使用表單元素創建局部視圖,並使用RenderPartial在主頁上的<div>元素內渲染局部視圖。然後,將值AjaxOptions.Url設置爲將處理表單的控制器操作的URL,並將值AjaxOptions.UpdateTargetId設置爲<div>元素的標識。

請參閱MSDN上的AjaxExtensions.BeginFormAjaxOptions瞭解更多詳情。