Asp.net mvc 2 .net 4.0 ошибка, когда типом модели просмотра является Tuple с более чем 4 элементами - PullRequest
3 голосов
/ 23 апреля 2010

Когда я создаю строго типизированное представление в 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);

или

view:

<%@ 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> отлично работает

1 Ответ

1 голос
/ 17 ноября 2010

Пожалуйста, просмотрите: извлекайте объекты из списка > и сохраняйте их в строго типизированной ViewModel

Получить объект из списка > и сохранить в ViewModel

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

...