ASP.NET MVC 1: привязка модели набора данных

Я нахожусь в ситуации, когда мне дают набор данных для вывода в виде MVC. Я действительно изо всех сил пытаюсь выяснить, как заставить связывателя модели поднять это на пути назад после представления. У меня есть что-то вроде этого...

public ActionResult TestData()
{
    DataSet data = new DataSet("DS");

    DataTable table = new DataTable("DT");
    data.Tables.Add(table);

    table.Columns.Add("ID", typeof (int));
    table.Columns.Add("Name", typeof (string));

    table.Rows.Add(1, "John");
    table.Rows.Add(2, "Mark");
    table.Rows.Add(3, "Paul");
    table.Rows.Add(4, "Chris");

    return View(data);
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult TestData(DataSet data)
{
    return View(data);
}

На странице я пробовал много разных схем именования для элементов ввода, но безрезультатно. Это вообще возможно? Я бы использовал тип viewmodel, если бы это было возможно, но, к сожалению, это полностью динамическая структура, и набор данных - наиболее естественная вещь для использования.

1 ответ

Решение

Если бы это был я, я бы сериализовал строки в скрытые поля, которые имеют одинаковый атрибут name. Может быть что-то вроде

<input type="hidden" name="dsRows" value="[id]_[name]" />

Затем на втором действии (которое принимает POST), принять строку [] в качестве параметра. Затем вы можете использовать небольшой запрос LINQ или что-то еще, чтобы "взорвать" массив в набор данных.

(примечание: я не проверял это специально, но я использовал стратегию несколько раз)

Другие вопросы по тегам