如何将'myArray'数组传递给mvc控制器?我已经尝试了一切,但我似乎无法得到任何工作
控制器
[HttpPost]
public ActionResult MyAction(MyModel model, List<string> myArray) {
//code...
}
查看
$('#dialog').dialog({
//...
buttons: {
"Cancel": function () {
$(this).dialog("close");
},
"Submit": function () {
var arrCount= 0;
var myArray = new Array();
//grabs all the dropdownlists that begin with id 'dropdownlist' and adds it to 'myArray'
$('form').contents().find("select[id ^= 'dropdownlist'] option:selected").each(function () {
myArray[arrCount++] = $(this).text();
});
if ($('form').validate().form()) {
$.ajax({
url: "MyController/MyAction",
type: 'POST',
dataType: "json",
traditional: true,
data: {
model: $("form").serialize(),
myArray: myArray
},
success: function (result) {
alert("debug: complete");
}
});
}
}
}
});
我知道如何将数组本身传递给控制器。但是,一旦我将现有模型添加到等式中,我不确定如何将数组传递给控制器。有什么想法吗?
答案 0 :(得分:0)
首先,简单的解决方案是:
使用一些分隔符
创建一个数组值字符串1 ## 2 ## 3 ...或1,2,3 ..等。
并使用
public ActionResult MyAction(MyModel model, string myArray) {
string[] values = myArray.Split("##"); //split incoming string with your separator
List<int> myIntArray = new List<int>();
foreach (var value in values)
{
int tmp = 0;
if (int.TryParse(value, out tmp))
{
myIntArray.Add(tmp);
}
}
//code...
}
适合简单的事情。
第二种方法稍微复杂一些但适用于对象。
假设您有以下内容:
public class YourMainModel
{
public YourMainModel()
{
ArrayField = new List<YourPartialModel>()
}
List<YourPartialModel> ArrayField {get; set;}
//some other fields
}
public class YourPartialModel
{
public string Name {get; set;}
//some other fields
}
在视图中使用某种枚举器来进行以下操作:
<form id="myForm">
//some other fields from YourMainModel here
//dealing with our array
@for (int i = 0; i < Model.ArrayField.Count(); i++)
{
@Html.TextBox("ArrayField[" + i + "].Name", Model.ArrayField[i].Name)
//some other fields from YourPartialModel here
}
</form>
然后
[HttpPost]
public ActionResult MyAction(YourMainModel model) {
//use model.ArrayFields here, it should be submitted
}