如何将JavaScript数组作为文章的一部分传递给ASP.NETMVC操作
How to pass a JavaScript Array to ASP.Net MVC Action as part of post
我有一个如下的cshtml,
DoPost.cshtml
@using (Html.BeginForm("Purchase", "PurchaseOrder", FormMethod.Post, new { @id = "frmPurchase" }))
{
// statements
// statements
<input type="button" id="submitPurchase" onclick = "myPurchase()" value="Select" />
}
在Javascript
中,我在变量"ExtraItems
"中有一个数组字符串
ExtraItems[0] ="123"
ExtraItems[1] ="124"
ExtraItems[2] ="125"
我接受数据的行动如下,
public ActionResult Purchase(PurchaseOrderModel model)
{
//Do some stuff with the passed data
return View("Purchase", model);
}
在上面的PurchaseOrderModel
中,我具有属性
public string[] SelectedProducts { get; set; }
以接受Javascript数组元素。
我尝试过的:简单的帖子不起作用,因为JavaScript数组元素不是Form元素的一部分,我不能使用@Html.HiddenFor
,因为它是一个数组。
因此,尝试在函数myPurchase()
、下发布Ajax
$a.post('@Url.Action("Purchase", "PurchaseOrder")', { SelectedProducts: ExtraItems });
在这里,我没有在操作中获得model.SelectedProducts
下的ExtraItems
详细信息。最大的问题是我想从操作中加载Purchase.cshtml
视图,但我把控件放回了Jquery Post。
请帮我怎么解决这个问题。
您应该将javascript数组作为json对象发布。您可以使用JSON.stringify((方法将值转换为JSON。类似于:
$.ajax({
url: '@Url.Action("Purchase", "PurchaseOrder")',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({
SelectedProducts: ExtraItems
})
});
Here is my example for solving your issue
-----------------------------------------
//Script
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<script>
var ExtraItems = ["aa","bb","cc","ff"];
function a()
{
$.ajax( {
type: 'POST',
url: '/Default1/Index',
data: { SelectedProducts: ExtraItems },
traditional: true,
success: function ( response )
{
alert( 'Sucs' );
}
} );
}
</script>
<button onclick="a();">click</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js"></script>
//控制器
[HttpPost]
public ActionResult Index( string[] SelectedProducts )
{
return View();
}
在模型中获取字符串属性,然后以逗号分隔的字符串发送数据
var dataToSent = ExtraItems.join(',')
如果您的Purchase模型中有一个名为Datum的string
类型的属性,则要发送的数据将通过模型
data : 'Datum=' + dataToSent
在操作中,您可以将数据拆分为数组对于返回响应,您必须在ajax调用的success
函数中重定向页面
$.ajax( {
type: 'POST',
url: '/Default1/Index',
data: { SelectedProducts: ExtraItems },
traditional: true,
success: function ( response )
{
window.location.href = "/controller/action" <--your url
}
} );
使用带有选项traditional:true
的$.ajax
函数为字符串项列表启用ASP.NET MVC默认模型绑定。
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 借助asp.net验证或java脚本对多个文本进行验证
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 将Javascript数组发送到控制器ASP.NET MVC
- ASP.NET通过单击JavaScript按钮触发c#事件
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- 从javascript调用asp.net codebehind函数
- 如何检查字符串的一部分与数组匹配
- 为什么可以't我使用了AJAX响应的一部分
- 使用javascript的Asp.net内容占位符
- 获取ASP.NET Ajax Timer状态
- ASP.NET网络摄像头显示
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- asp.net,包括iss上的javascript slow
- 选择不在GridView-ASP.NET中激发
- 仅重新加载网页的一部分
- 如何将 html 页面的一部分保存到客户端 (javascript) 或服务器端 asp.net 的图像或 pdf
- 如果Else的一部分在我的Javascript切换按钮ASP.net/Javascript中不起作用
- 如何将JavaScript数组作为文章的一部分传递给ASP.NETMVC操作