Я активно разрабатываю настольные приложения, локальные и сетевые сервисы, какой-то классический ASP.NET и т.д., поэтому привык к статической компиляции и статическому анализу кода. Теперь, когда я (наконец-то) изучаю ASP.NET MVC 3.0, я видя, что многие эксперты ASP.NET MVC и опытные разработчики рекомендуют использовать строго типизированные представления в ASP.NET MVC 3.0 (где это применимо).
Я предполагаю, что "строгая типизация" означает запись @model=...
в верхней части кода представления. Но при этом я заставляю работать только IntelliSense, статическая проверка кода не выполняется. Я могу написать все, что захочу, в операторе @model
в cshtml, и он будет скомпилирован и бегать. Следовательно, Model.Anything
также компилируется. На самом деле, если я не набираю @model, я могу динамически использовать любую модель, которая мне нужна, которая имеет «совместимые» свойства и методы.
Я привык к «строго типизированному», что означает «не будет компилироваться», например, LINQ to что угодно просто не скомпилируется, если вы не укажете свойства правильно. Есть ли у @model
какая-либо другая цель, кроме IntelliSense и ошибка времени выполнения, и почему она называется строго типизированной, если на самом деле это не так?