将Javascript数据发送到Ajax表单上的控制器提交

时间:2016-05-11 08:41:06

标签: jquery asp.net-mvc-5

我正面临一个问题。

我在div中的webform中放置了几个下拉菜单和输入控件。 当我点击Add按钮时,上面的div使用javascript生成 所有控件都将通过具有不同ID的javascript动态生成 并在下面附上。

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

当我点击页面中的保存按钮时,它是一个ajax提交

@(Ajax.Beginform (){}

在这种情况下,如何从控件获取值并将其发送到控制器。当我点击添加按钮时,我可以将值存储在javascript中。但是点击保存后如何将数据传递给控制器​​。我可以用javascript存储数据。但在提交表格时,我无法将其发送给表格。

请帮助你。

2 个答案:

答案 0 :(得分:1)

您需要使用@Ajax.BeginForm参数调用AjaxOptions来驱动其行为。此参数的Url属性指定将发送AJAX请求的位置(在这种情况下,我假设它将路由到控制器操作方法的URL)。参数的UpdateTargetId属性指定哪个客户端DOM元素将从action方法的返回值(例如,可能是PartialViewResult)接收呈现的HTML。

您还可以在OnSuccess参数中设置OnFailureAjaxOptions属性,以指定分别在成功和失败时必须执行的JavaScript代码。

@Ajax.BeginForm将生成代码以将表单值(甚至是动态添加的元素)提交到指定的URL,处理响应并呈现数据有效负载(如果返回PartialViewResult,则为HTML )在UpdateTargetId指定的DOM元素内。因此,您不必在JavaScript中存储表单值,也不必手动将它们提交给控制器操作。

说,您需要在提交值后刷新表单。使用表单元素创建局部视图,并使用RenderPartial在主页上的<div>元素内呈现局部视图。然后,将AjaxOptions.Url的值设置为将处理表单的控制器操作的URL,将AjaxOptions.UpdateTargetId的值设置为<div>元素的ID。

有关详细信息,请参阅MSDN上的AjaxExtensions.BeginFormAjaxOptions

答案 1 :(得分:0)

我假设你想从表单元素中获取信息。

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

你应该能够以这种方式获得这些领域的价值。使用这些值,您应该能够对服务器进行ajax调用。