asp.net webapp - viewdata 对本地请求变量安全吗?

asp.net webapp - is viewdata safe for local request variable?

提问人:Priyansh Yadav 提问时间:1/15/2023 最后编辑:Qing GuoPriyansh Yadav 更新时间:1/16/2023 访问量:65

问:

我需要什么 -

我有一个 .net7.0 asp.net-webapp (razor)。我想根据每个请求自定义 cshtml 的某些部分,这将由 c# 对应的 PageModel 类代码确定。

我做了什么 - 1 -

使用类静态变量。
结果 - 失误。知道它们对所有用户都是相同的,因此它会破坏网站功能。

2 - 使用 cookie 结果 - cookie
只能附加到响应并在请求时读取,因此数据不能在一个请求中传输,但它有利于跨请求传输数据。

3 - Viewdata[“name”]
结果 - 发现适合我的需要.数据仅适用于该请求。


我想知道的 - 1 -
viewdata 中的数据在请求结束后是否会被销毁或堆积在服务器的内存中。

2 - 以这种方式使用 viewdata 是否安全。在使用它时,我应该记住什么,以便它是安全的,不会加载服务器并提供所需的功能。

C# .NET ASP.Net-Core 剃刀页 视图数据

评论

0赞 Qing Guo 1/16/2023
存储数据的视图数据对象仅在当前请求期间存在。因此,viewdata 中的数据在请求结束后被销毁。ViewData 是一个容器,用于将数据从 PageModel 传递到内容页。“不加载服务器并提供所需的功能”是什么意思?
0赞 Priyansh Yadav 1/16/2023
@QingGuo这意味着在请求结束后变量的数据不存在,否则它将加载服务器(如滞后或降低效率)。对不起,我的语法应该不会给服务器带来太大的负担。

答:

2赞 Mike Brind 1/16/2023 #1

您实际上还没有给出任何关于您的需求的细节,但在回答主要问题时,ViewData 不会跨请求存储。它是 PageModel 的一个属性,该属性随每个请求一起实例化,并在处理请求并生成响应后销毁。

ViewData 用于将数据传递到视图/页面。它不是强类型,并且容易出错。因此,建议使用 PageModel 的公共属性将数据传递到视图/页面。ViewData 的主要用例是将数据传递到弱类型的布局页面。

https://www.learnrazorpages.com/razor-pages/viewdata

评论

0赞 Priyansh Yadav 1/16/2023
好吧,我不需要传递强类型数据。它的所有值,而不是包括 html 标签在内的任何值。所以 viewdata 就是这样。