1
我可以使用jQuery將複雜對象發佈到ASP.NET MVC控制器,只要修改$ .param()的輸出就像這:「Column [0] [Name]」 - >「Column [0] .Name」將複雜的LINQ-to-SQL對象發佈到ASP.NET MVC控制器
但是,這隻適用於數據綁定到服務器上的數組類型屬性(下面示例中的Columns1 )。像IEnumerable這樣的集合類型或LINQ-to-SQL使用的EntitySet不起作用。
我應該簡單地定義一個只寫的數組類型屬性來設置綁定的EntitySet屬性,還是有更優雅的解決方案?
的JavaScript
var columns =
[
{ Name: 'Alpha', Width: 50 },
{ Name: 'Bravo', Width: 100 },
{ Name: 'Charlie', Width: 75 }
];
var params = $.param(
{
Name: 'MyTable',
Columns1: columns,
Columns2: columns,
Columns3: columns
});
params = params.replaceAll('%5BName%5D=', '%2EName=');
params = params.replaceAll('%5BWidth%5D=', '%2EWidth=');
$.post($.getUrl('/MyController/CreateTable/'),
params,
function()
{
$.log('done');
});
域類
public class Table
{
public string Name { get; set; }
public Column[] Columns1 { get; set; }
public IEnumerable<Column> Columns2 { get; set; }
public EntitySet<Column> Columns3 { get; set; }
}
public class Column
{
public string Name { get; set; }
public int Width { get; set; }
}
控制器動作
public ActionResult CreateTable(Table table)
{
// table.Columns1 contains a list of three Columns, with Name and Width set properly
// table.Columns2 and table.Columns3 both contain three Column objects, but Name and Width are null/0
}
替換替換的replaceAll()()字符串函數,如圖here。