我正在使用.Net Core 2.0构建剃须刀页面应用
在.cshtml中声明属性(如下所示)有什么区别
@functions
{
public StandardListenerViewModel listener { get; set; }
}
和页面模型中声明的那个
public class SingleDeviceModel : PageModel
{
[BindProperty]
public StandardListenerViewModel listener { get; set; }
public void OnGet(StandardListenerViewModel lstner)
{
this.listener = lstner;
}
}
答案 0 :(得分:1)
就属性而言,无论是在functions
块中还是在PageModel类中声明它,都没有真正的技术差异。编译应用程序时,它仍然成为生成的类的属性。区别实际上是代码组织之一。
大多数人都喜欢使用PageModel类,因为它在UI(标记)和请求处理逻辑之间提供了清晰的分隔。单元测试逻辑要容易得多。您只需要在测试中实例化PageModel类的实例。
通常,functions
块更可能在简单的演示中使用,以使代码更易于遵循以证明概念。对于那些从PHP,经典ASP或ASP.NET网页迁移到Razor页面的人来说,它们可能也提供了更轻松的过渡,在同一文件中具有处理逻辑和UI标记是常见的模式。