Jquery 将复杂的LINQ to SQL对象发布到ASP.NET MVC控制器
我可以使用jQuery将复杂对象发布到ASP.NET MVC控制器,只要我修改$.param()的输出,如下所示:“Column[0][Name]”->“Column[0].Name” 但是,仅当数据绑定到服务器上的数组类型属性(下例中的列1)时,此操作才有效。像IEnumerable或LINQ to SQL使用的EntitySet这样的集合类型不起作用 我应该简单地定义一个只写的数组类型属性来设置绑定上的EntitySet属性,还是有更优雅的解决方案 JavaScriptJquery 将复杂的LINQ to SQL对象发布到ASP.NET MVC控制器,jquery,asp.net-mvc,linq-to-sql,Jquery,Asp.net Mvc,Linq To Sql,我可以使用jQuery将复杂对象发布到ASP.NET MVC控制器,只要我修改$.param()的输出,如下所示:“Column[0][Name]”->“Column[0].Name” 但是,仅当数据绑定到服务器上的数组类型属性(下例中的列1)时,此操作才有效。像IEnumerable或LINQ to SQL使用的EntitySet这样的集合类型不起作用 我应该简单地定义一个只写的数组类型属性来设置绑定上的EntitySet属性,还是有更优雅的解决方案 JavaScript var column
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 partial class Table
{
public string Name { get; set; }
public EntitySet<Column> Columns { get; set; }
}
编辑
将replace()字符串函数替换为replaceAll(),如图所示。以下是我在问题中提到的修复示例。它可以工作,但需要为所有类似的属性实现 已“生成”LINQ到SQL域类
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 partial class Table
{
public string Name { get; set; }
public EntitySet<Column> Columns { get; set; }
}
公共部分类表
{
公共字符串名称{get;set;}
公共EntitySet列{get;set;}
}
具有jQuery友好数组属性的分部类
public partial class Table
{
public Column[] ColumnsIn
{
get
{
// ASP.NET MVC requires a getter in all bound properties, but the returned value isn't used in this case
return null;
}
set
{
Columns = new EntitySet < Column > ();
Columns.AddRange ( value );
}
}
}
公共部分类表
{
公共栏目
{
收到
{
//ASP.NET MVC在所有绑定属性中都需要一个getter,但在本例中不使用返回值
返回null;
}
设置
{
Columns=新的EntitySet();
Columns.AddRange(值);
}
}
}