我有一个方法返回一个数组(string[]
),我试图将这个字符串数组传递给一个Action.Currently我无法传递我的参数。我是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})';
});
答案 0 :(得分:1)
试试这个,
$('#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 });
});
将columnNames
作为字符串数组
public ActionResult Index(string val1, string[] columnNames)
{
// Your code
}
<强>更新强>
如果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();
});
答案 1 :(得分:0)
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})';
嗨路易斯,
您正在尝试从服务器端标记访问javascript varaibles Val1和columnNames,但这是不可能的。有关详细信息,请参阅此URL。
您可以通过以下方式完成。
var jsonData = { val1 : Val1, columnNames : columnNames };
$.ajax({
type: "GET", //GET or POST or PUT or DELETE verb
url: "Home/Index", // Location of the service
data: jsonData,
contentType: "application/json; charset=utf-8", // content type sent to server
processdata: true, //True or False
success: function () {
alert("success")
}
});
在你的控制器方面,你必须像
一样写public ActionResult Index(string val1, string columnNames)
{
// Your code
}
答案 2 :(得分:0)
您标记了JQuery-Ajax,但我没有在代码示例中看到任何ajax尝试?所以我猜你想知道一个面向Ajax的解决方案。您可能没有使用Zend Framework,但我希望这些答案可以帮助您找到解决方案的正确方向。
从JS / Zend框架体验中,您可以看到类似
的内容$('#export-button').click(function () {
....
var actionUrl= "/controller/action/";
$.ajax({
url: actionUrl,
data: {
variable1: "OrgDataExport",
variable2: "Search",
Val1: Val1,
columnNames: columnNames
},
dataType: "json",
success: function(json) {
//do stuff
}
});
....
});
在ZendFramework控制器中,您可以获取请求中的变量:
$Val1 = $this->_request->getparam("Val1");