小编Ian*_*dge的帖子

在ASP.NET MVC(3)中格式化模型属性的最佳位置在哪里?

我最近一直在寻找ASP.NET MVC框架中的最佳实践,特别是关注的关注.我的问题是,如果我在模型上有属性,那么在该属性上进行某些格式化的最佳位置在哪里?

我想过几个选项,但不确定哪个是最好的.该示例使用DateTime.对不起,这有点长.

选项1: 在视图中:@Model.TheDate.String("{0:'blah'dd/MM/yyyy}") 我知道这不对,因为格式字符串不应该在这里(如果我想在整个应用程序中更改格式怎么办)

选项2: 视图中使用的扩展方法:@Model.TheDate.DisplayItNicePlease() 这种方式很有意义,因为视图正在选择用于格式化的扩展方法,而viewmodel只是将date属性公开给视图.不确定视图或视图模型是否应该负责格式化.

选项3: 在Html Helper方法中,例如,我应该在ASP.NET MVC 3中放置声明性HTML帮助器,以便您可以使用:

@Html.DisplayDateNice(Model.TheDate)
Run Code Online (Sandbox Code Playgroud)

选项4: 视图模型上的额外属性,以格式化它并返回一个字符串,例如:

public string TheDateStr
{
    get
    {
        return TheDate.DisplayItNicePlease();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在视图中你就拥有了

@Model.TheDateStr
Run Code Online (Sandbox Code Playgroud)

与选项3非常相似,只是它保持视图真实,非常简单 - 视图只是输出模型中的内容而不关心数据的格式.

选项5: DisplayFormat属性,例如:在视图模型上:

[DisplayFormat(DataFormatString = "{0:'blah'dd/MM/yyyy}")]
public DateTime TheDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

然后在视图上:

@Html.DisplayFor(m => m.TheDate)
Run Code Online (Sandbox Code Playgroud)

我喜欢这个,除了格式字符串不再使用,所以带上选项5 ......

选项6: 某种习惯,DisplayFormatAttribute例如NiceDateDisplayFormatAttribute.在我看来,这可能是最好的解决方案,如果您只想要一个简单的字符串格式化,那么效果很好.我认为如果你想要更复杂的东西会变得更复杂,例如显示相对时间(计算C#中的相对时间),在这种情况下,最好是在扩展方法/ html助手中.

可能还有其他方法我甚至都不知道......

asp.net-mvc asp.net-mvc-3

14
推荐指数
1
解决办法
2048
查看次数

在 youtube-nocookie.com 域中使用 YouTube IFrame Player API 脚本时禁用 cookie

将 YouTube IFrame Player API 与从www.youtube-nocookie.com域播放的隐私增强模式视频一起使用时,如何禁用在 youtube.com 上设置的 cookie ?

https://support.google.com/youtube/answer/171780?hl=en的“开启隐私增强模式”部分,建议使用www.youtube-nocookie.com域:

在不使用跟踪观看行为的 cookie 的情况下嵌入 YouTube 视频。

这很有效,并且不会按预期设置 cookie。

但是,我们使用 IFrame Player API(带有enablejsapi=1嵌入参数),它确实设置了 cookie。我们看到在 .youtube.com 域上设置了以下 cookie:

  • YSC
  • VISITOR_INFO1_LIVE

这些从位于https://www.youtube.com/iframe_api的 Iframe Player API 脚本中设置为 HTTP cookie (打开 Chrome 隐身窗口并直接查看该脚本 URL 并检查 cookie,您将看到上述 2 个 cookie 集)。我不确定这些 cookie 到底是什么,但它们看起来很像跟踪 cookie。

因此,这些是在用户与视频交互或采取任何同意操作之前设置的事实,意味着我们无法使用 IFrame Player API,同时在欧盟 cookie 指令方面仍然符合 GDPR。

所以问题是,我们如何在不设置 cookie 的情况下使用 IFrame Player API?

注意:我已经用标签youtube-iframe-api发布了这篇文章,希望谷歌能回答这个问题:

我们支持 Stack Overflow …

youtube cookies youtube-iframe-api

7
推荐指数
1
解决办法
2072
查看次数