Pass List <Object>из Razor View для публикации действий - PullRequest
0 голосов
/ 23 мая 2018

У меня есть модель. Просмотреть как это:

public class ContactHomePage
{
    public string Query { get; set; }
    public List<SqlParameter> SqlParameters { get; set; }
}

В действии Index (которое работает как HTTPGet) я заполняю ContactHomePage и передаю View, а в представлении хочу передать эту модельaction GetRecords, это сообщение после этого действия:

public async Task<IActionResult> GetRecords(JqGridRequest request, string query, List<SqlParameter> sqlParameters)
{
}

и мой URL-адрес сообщения ajax, например:

url: '@Url.Action("GetRecords", "Contact", new { query = Model.Query, sqlParameters = Model.SqlParameters})'

при запуске приложения, query объект, который был в строкеРежим имеет свои данные, но sqlParameters с типом List не имеет никакого значения!теперь мой вопрос, как можно опубликовать List<Object> из вида бритвы на действие публикации?

1 Ответ

0 голосов
/ 23 мая 2018

Если ваш ActionResult имеет тип Get, вы не можете отправлять сложные типы данных.Решение - преобразовать ваш сложный объект (Model.SqlParameters) в строку, используя Newtonsoft.Json.JsonConvert , а затем проанализировать его в 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);

     // ...
}
...