在所有事情之前,我只是出于好奇而做.这里没有任何现实世界的应用,但只是为了知识和修补…
ASP.NET Views具有Model和ViewData等属性,甚至还有方法.
你甚至可以像普通的class.cs文件一样使用@Using.
我知道它是类型WebPageView< TModel>
我的主要问题是:是班吗?
应该是因为它是一种类型,但是..
我应该也可以这样做(剃刀引擎):
@{ public class Person { //etc... } var p = new Person(); } <span>@p.Name</span>
但是我不能..为什么?
注意:目前一个C#,ASP.net初学者.
解决方法
您不能这样做,因为Razor标记被编译成从WebViewPage或WebViewPage< TModel>派生的生成类中的方法内的语句序列.
更重要的问题是,为什么要这样做?相反,倾向于保持Razor没有这种逻辑 – 它的工作应该是生成布局,而不是做任何类型的业务逻辑或业务数据转换.在您的操作方法中做所有的重大举措,并提供一个模型,描述以仅需要简单的Razor标记进行处理的格式呈现布局所需的数据.
有一些教程描述如何接近MVC和剃刀.我挖了一个简短的例子,但是做了一个合理的工作,涵盖一个端到端的故事,可能会帮助你获得这个想法.它包括使用EF来获取数据,这可能更多是你讨价还价的 – 但值得一读,以获得整个架构如何挂起的全貌:http://weblogs.asp.net/shijuvarghese/archive/2011/01/06/developing-web-apps-using-asp-net-mvc-3-razor-and-ef-code-first-part-1.aspx