我的模型视图如下:
public class ContactHomePage
{
public string Query { get; set; }
public List<SqlParameter> SqlParameters { get; set; }
}
在Index操作(作为HTTPGet)中,我填充ContactHomePage
并传递给View,在视图中,我想将此模型传递给action GetRecords
,这样的帖子操作如下: / p>
public async Task<IActionResult> GetRecords(JqGridRequest request, string query, List<SqlParameter> sqlParameters)
{
}
和我的ajax帖子网址是这样的:
url: '@Url.Action("GetRecords", "Contact", new { query = Model.Query, sqlParameters = Model.SqlParameters})'
在运行应用程序时,处于字符串模式的query
对象有其数据,但类型为List的sqlParameters没有任何值!
现在我的问题是,如何从剃须刀视图发布List<Object>
到发布操作?
答案 0 :(得分:1)
如果您的ActionResult是Get类型,则无法发送复杂数据类型。解决方案是使用 Newtonsoft.Json.JsonConvert 将您的复杂对象(Model.SqlParameters)转换为字符串,然后在ActionResult上将其解析为您的对象。像这样:
在剃须刀视图中( Newtonsoft.Json.JsonConvert.SerializeObject ):
@Url.Action("MyActionResult", "MyController", new { objectStringfied = Newtonsoft.Json.JsonConvert.SerializeObject(new List<MyObject>()) })
在控制器( Newtonsoft.Json.JsonConvert.DeserializeObject ):
public virtual ActionResult MyActionResult(string objectStringfied)
{
List<MyObject> model = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MyObject>>(objectStringfied);
// ...
}