Ошибка Asp.net mvc 2 .net 4.0, когда тип модели View — Tuple с более чем 4 элементами

Когда я создаю строго типизированное представление в Asp.net mvc 2, .net 4.0 с типом модели Tuple, я получаю сообщение об ошибке, когда Tuple имеет более 4 элементов.

пример 1: тип представления Tuple<string, string, string, string> (4-кортеж) и все работает нормально

Посмотреть:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/WebUI.Master" Inherits="System.Web.Mvc.ViewPage<Tuple<string, string, string, string>>" %>

контроллер:

var tuple = Tuple.Create("a", "b", "c", "d");
return View(tuple);

пример 2: тип представления Tuple<string, string, string, string, string> (5-кортеж), и у меня есть эта ошибка: Compiler Error Message: CS1003: Syntax error, '>' expected

Посмотреть:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/WebUI.Master" Inherits="System.Web.Mvc.ViewPage<Tuple<string, string, string, string, string>>" %>

контроллер:

var tuple = Tuple.Create("a", "b", "c", "d", "e");
return View(tuple);

пример 3, если моя модель просмотра имеет динамический тип, я могу использовать как 4-кортеж, так и 5-кортеж, и на странице нет ошибки

Посмотреть:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/WebUI.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

контроллер:

dynamic model = new ExpandoObject();
model.tuple = Tuple.Create("a", "b", "c", "d");
return View(model);

or

Посмотреть:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/WebUI.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

контроллер:

dynamic model = new ExpandoObject();
model.tuple = Tuple.Create("a", "b", "c", "d", "e");
return View(model);

Даже если у меня есть что-то вроде Tuple<string, Tuple<string, string, string>, string> 3-кортежа, и один из элементов также является кортежем, а сумма элементов во всех кортежах больше 4, я получаю ту же ошибку, Tuple<string, Tuple<string, string>, string> работает нормально


person Bojan    schedule 22.04.2010    source источник
comment
Кортеж — это упорядоченный набор, а не модель представления. Сделай свой класс.   -  person Ryan    schedule 23.04.2010


Ответы (1)


Пожалуйста, ознакомьтесь: Извлеките объекты из List‹ Tuple ‹ object1, object2 > > и сохраните их в строго типизированной модели представления.

Получить объект из списка‹ Tuple ‹ объект1, объект2 › › и сохранить во ViewModel

Таким образом, вы можете настроить соединение с 5 связанными таблицами. Вы (вероятность граничит с уверенностью) получите кортежи, содержащие 5 объектов (отражающие таблицы). Переберите список кортежей и получите элементы в каждом кортеже, разделенные на 5 списков объектов. Назовите их, как я предложил, в 5 отдельных частичных представлениях (если вы знакомы с ASP MVC 2). Если нет, я верю, что вы все равно справитесь. Через некоторое время, надеюсь, попробую сам. Я, конечно, как минимум настрою соединение с тремя таблицами, возможно, с четырьмя. Однако я могу себе представить, что при определенных обстоятельствах кто-то должен будет присоединиться как минимум к пяти... особенно, когда база данных сильно нормализована. Успех!

person KWHJ    schedule 17.11.2010