Javascript 在MVC中将字符串数组从视图传递到控制器的操作#
我有一个返回数组(Javascript 在MVC中将字符串数组从视图传递到控制器的操作#,javascript,arrays,asp.net-mvc-3,jquery,url-routing,Javascript,Arrays,Asp.net Mvc 3,Jquery,Url Routing,我有一个返回数组(string[])的方法,我正在尝试将此字符串数组传递到操作中。目前我无法传递参数。我是MVC3的新手。 请让我知道为什么我不能将参数传递给ActionResult..我已经用相同的参数名定义了ActionResult。。 提前谢谢大家 $('#export-button').click(function () { var columnLength = $("#grid")[0].p.colNames.length; var c
string[]
)的方法,我正在尝试将此字符串数组传递到操作中。目前我无法传递参数。我是MVC3的新手。
请让我知道为什么我不能将参数传递给ActionResult..我已经用相同的参数名定义了ActionResult。。
提前谢谢大家
$('#export-button').click(function () {
var columnLength = $("#grid")[0].p.colNames.length;
var columnNames = "";
for (var i = 0; i < columnLength; i++) {
if ($("#grid")[0].p.colModel[i].hidden == false) {
columnNames = columnNames + $("#grid")[0].p.colModel[i].name + ',';
}
}
var Val1 = jQuery(txt_search1).val();
alert(Val1); alert(columnNames);
document.location = '@Url.Action("OrgDataExport","Search", new { Val1 = Val1 , columnNames = columnNames})';
});
$(“#导出按钮”)。单击(函数(){
var columnLength=$(“#网格”)[0].p.colNames.length;
var columnNames=“”;
对于(变量i=0;i
然后,在ZendFramework控制器中,您可以获取请求上的变量:
$Val1 = $this->_request->getparam("Val1");
试试这个
$('#export-button').click(function () {
var columnLength = $("#grid")[0].p.colNames.length;
// columnNames is an object now
var columnNames = {};
for (var i = 0; i < columnLength; i++) {
if ($("#grid")[0].p.colModel[i].hidden == false) {
columnNames[i] = $("#grid")[0].p.colModel[i].name;
}
}
var Val1 = jQuery(txt_search1).val();
document.location = "Home/Index/" + $.param({ Val1 = Val1 , columnNames = columnNames });
});
更新:
如果URL太大,您可以使用POST方法通过表单提交值。如果您的视图已经有一个表单,则使用该表单动态创建一个表单,并通过POST提交值
$('#export-button').click(function () {
var Val1 = jQuery(txt_search1).val();
$("#hidden-form").remove();
// create a form dynamically
var form = $('<form>')
.attr({ id: "hidden-form",
action: "/Home/Index",
method: "post",
style: "display: none;"
})
.appendTo("body");
// add the "Val1" as hidden field to the form.
$('<input>').attr({ name: "Val1 ", value: Val1, type: "hidden" }).appendTo(form);
var columnLength = $("#grid")[0].p.colNames.length;
// add the "columnNames" as hidden fields to the form
for (var i = 0; i < columnLength; i++) {
if ($("#grid")[0].p.colModel[i].hidden == false) {
var t = $("#grid")[0].p.colModel[i].name;
$('<input>').attr({ name: "columnNames", value: t, type: "hidden"
}).appendTo(form);
}
};
// submit the form
form.submit();
});
$(“#导出按钮”)。单击(函数(){
var Val1=jQuery(txt_search1.val();
$(“#隐藏形式”).remove();
//动态创建表单
变量形式=$('')
.attr({id:“隐藏形式”,
操作:“/Home/Index”,
方法:“张贴”,
样式:“显示:无
})
.附于(“主体”);
//将“Val1”作为隐藏字段添加到表单中。
$('').attr({name:“Val1”,value:Val1,type:“hidden”}).appendTo(form);
var columnLength=$(“#网格”)[0].p.colNames.length;
//将“columnNames”作为隐藏字段添加到表单中
对于(变量i=0;i
array取代了新的“{Val1=Val1,columnNames=columnNames}”?为什么不将项目推送到javascript数组并发布到服务器,而不是混乱的查询字符串?谢谢你的快速回复@戈文。。我想将Val1和ColumnName[string]数组传递给服务器。。我的表达不正确。。请告诉我如何通过javascript将这些值传递给服务器。谢谢。使用ajax,URL不会更改为新视图。。。“我的需要”当前位于://Localhost/search/OrganizationSearch,我想转到://Localhost/search/OrgDataExport。所以我使用Url.Action方法。。他还用asp.net-mvc-3
来标记他的问题,而不是php
或zend
。除此之外,'Val1'=>Val1
是无效的javascript。完全正确@DarinDimitrov,感谢您指出这一点(对它进行了投票)。我知道Louis没有标记php或Zend,但这只是我给出的与JQuery Ajax相关的答案的MVC实现。:)@洛甘萨马。。谢谢你的回复。。我想在MVC3中使用.cshtml中的javascript代码来访问Controller.cs。@alok_dida.“columnNames”变量只是字符串。我从jquery网格中查询所选列。当我打印出来的时候,它得到了像“col1,col2,col3,col4”这样的值。所以我想把这个字符串发送给控制器。现在我按照你的建议进行测试。使用ajax。谢谢。使用ajax,URL不会更改为新视图。。。“我的需要”当前位于://Localhost/search/OrganizationSearch,我想转到://Localhost/search/OrgDataExport。所以我使用Url.Action方法。。要转到新URL…@Louismm。您可以直接使用window.location='://localhost/search/OrgDataExport?Val1='+Val1+'&columnNames='+columnNames;在导出按钮上单击事件。请看一看你好,马克。。感谢您的代码示例。。它对我有用..只需要编辑abit..“Index?”+$.param({Val1:Val1,columnNames:columnNames});请让我知道一件事,我可以隐藏我的参数从网址。bcos现在在url中,我的参数太长。。有什么建议吗?等待你的答复,这是一个真正的问题。我建议你通过使用POST的HTML表单向服务器提交值。你能给我看一些示例代码吗?或者请参考我的任何帖子。这是我第一次体验。。。提前谢谢..我更新了答案。如果您的视图中已经有一个表单,请使用该表单,否则请创建一个动态表单,就像我上面所做的那样。谢谢你的代码,这很有效。让我知道一件事,我可以返回视图()和新窗口吗?请给我提些建议。。
$('#export-button').click(function () {
var columnLength = $("#grid")[0].p.colNames.length;
// columnNames is an object now
var columnNames = {};
for (var i = 0; i < columnLength; i++) {
if ($("#grid")[0].p.colModel[i].hidden == false) {
columnNames[i] = $("#grid")[0].p.colModel[i].name;
}
}
var Val1 = jQuery(txt_search1).val();
document.location = "Home/Index/" + $.param({ Val1 = Val1 , columnNames = columnNames });
});
public ActionResult Index(string val1, string[] columnNames)
{
// Your code
}
$('#export-button').click(function () {
var Val1 = jQuery(txt_search1).val();
$("#hidden-form").remove();
// create a form dynamically
var form = $('<form>')
.attr({ id: "hidden-form",
action: "/Home/Index",
method: "post",
style: "display: none;"
})
.appendTo("body");
// add the "Val1" as hidden field to the form.
$('<input>').attr({ name: "Val1 ", value: Val1, type: "hidden" }).appendTo(form);
var columnLength = $("#grid")[0].p.colNames.length;
// add the "columnNames" as hidden fields to the form
for (var i = 0; i < columnLength; i++) {
if ($("#grid")[0].p.colModel[i].hidden == false) {
var t = $("#grid")[0].p.colModel[i].name;
$('<input>').attr({ name: "columnNames", value: t, type: "hidden"
}).appendTo(form);
}
};
// submit the form
form.submit();
});