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 или что-то еще, чтобы "взорвать" массив в набор данных.
(примечание: я не проверял это специально, но я использовал стратегию несколько раз)