.net core 在@functions{}中声明一个属性与在Razor页面的PageModel中声明的属性有什么区别
我正在使用.Net Core 2.0构建razor pages应用程序 在.cshtml中声明属性(如下所示)有什么区别.net core 在@functions{}中声明一个属性与在Razor页面的PageModel中声明的属性有什么区别,.net-core,razor-pages,.net Core,Razor Pages,我正在使用.Net Core 2.0构建razor pages应用程序 在.cshtml中声明属性(如下所示)有什么区别 @functions { public StandardListenerViewModel listener { get; set; } } 以及在页面模型中声明的 public class SingleDeviceModel : PageModel { [BindProperty] public StandardListenerViewModel
@functions
{
public StandardListenerViewModel listener { get; set; }
}
以及在页面模型中声明的
public class SingleDeviceModel : PageModel
{
[BindProperty]
public StandardListenerViewModel listener { get; set; }
public void OnGet(StandardListenerViewModel lstner)
{
this.listener = lstner;
}
}
无论属性是在
函数
块中声明还是在PageModel类中声明,都没有真正的技术区别。编译应用程序时,它仍然成为生成类的属性。区别其实在于代码组织
大多数人更喜欢使用PageModel类,因为它在UI(标记)和请求处理逻辑之间提供了清晰的分离。单元测试逻辑要容易得多。您只需要在测试中实例化PageModel类的一个实例
一般来说,函数
块更可能在简单的演示中使用,以使代码更易于遵循,便于概念验证。对于那些从PHP、经典ASP或ASP.NET网页迁移到Razor页面的人来说,它们可能还提供了一个更容易的平台,在这些网页中,处理逻辑和UI标记位于同一文件中是一种常见的模式