Можно ли использовать С# с именем Tuple в качестве типа модели страницы MVC?

В С# 7 вы можете иметь именованные кортежи:

var foo = (Name: "Joe", Age: 42);

Если я передам это модели MVC, используя:

return View(foo);

Тогда какой синтаксис следует использовать в файле cshtml для объявления модели? Хотя это не работает, что-то вроде...

@model (string Name, int Age);

person paultechguy    schedule 23.08.2017    source источник
comment
Я бы рекомендовал сделать это по той же причине, по которой мне было дано не реализовывать вашу модель List<T>: что произойдет, если вам нужно добавить другое свойство/коллекцию? Да, вы можете расширить свой кортеж проще, чем просто список, однако он может очень легко запутаться. Сделать модель. Это MVC, а не TVC.   -  person krillgar    schedule 23.08.2017
comment
Я еще не читал о новых возможностях C# 7, но может быть: ValueTuple<string, int>?   -  person apocalypse    schedule 23.08.2017


Ответы (1)


Что касается текущего времени, вы не можете и должны использовать

@model Tuple<string, int>
//or
@model ValueTuple<string, int>

О разнице между двумя вариантами: В чем разница между System.ValueTuple и System.Tuple?

Вы можете подписаться на GitHub: Razor создает исключение CompilationFailedException при повторении именованного кортежа (I знаю, что он закрыт как дубликат, но имя более показательно для текущего случая)

person Gilad Green    schedule 23.08.2017
comment
Йепперс; В конце концов я сделал это, но, конечно, хотел бы сделать что-то вроде: @model (string: Name, int: Age); Я могу жить с этим пока. :-) Спасибо. - person paultechguy; 24.08.2017
comment
Да, это ошибка в Razor 2.0.0 — отслеживается здесь github.com/aspnet/Razor/ вопросы/1592. Это будет исправлено в 2.1.0 - person Ryan Nowak; 06.09.2017
comment
@RyanNowak - Спасибо - я буду отслеживать и обновлять свой ответ вовремя - person Gilad Green; 06.09.2017