Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET HTML输出中的这些内容是什么?_Asp.net_Html_Asp.net Mvc - Fatal编程技术网

ASP.NET HTML输出中的这些内容是什么?

ASP.NET HTML输出中的这些内容是什么?,asp.net,html,asp.net-mvc,Asp.net,Html,Asp.net Mvc,请看这个: VIEWSTATE“id=“\u VIEWSTATE”值=”/2.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

请看这个:

VIEWSTATE“id=“\u VIEWSTATE”值=”/2.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 CHWAFJ2H0Dha6ly93D3CubGvHcM5KZxZub3Cuy29TL1NHBxBzXmuyXnEgKag0PdxyCHWAFKH0Dha6ly93D3CubGvHcM5KZuB3Cuy29TL3NjCmLiz5HC3B4ZGqCd8PFGIFAUJAHR0DOVL3DY5SZWFYBMRLDm5VDY5JB20VRKFRMFZCHHKZCHHZIIRDW8WAH8ABXODHRWOI8V(它大了10倍,但我已将其移除)

这是ASP.NET生成的HTML吗?ASP.NET MVC也做同样的事情吗?

这就是所谓的


ASP.NET MVC不生成ViewState。

ASP.NET MVC不生成ViewState,但这并不一定意味着它更快

首先,如果ASP.NETWebForms页面中有那么多的viewstate,则可能是做错了什么。在webforms中避免大的视图状态并不难


其次,webforms放入viewstate的内容主要替代mvc页面在每次请求时需要重建的内容。在公共互联网站点上,这往往对mvc有利,因为与使用额外的服务器资源相比,这些站点的带宽更昂贵,速度也更慢。对于公司局域网上的专用内联网,它倾向于使用webforms,从浏览器到web服务器的上游带宽是免费的、充足的和快速的。

webforms使用viewstate在回发到服务器时保持控制状态。例如,假设您在web表单上有一个文本框和一个按钮。在文本框中键入内容,然后单击按钮。该按钮执行回发到服务器的操作。重新加载页面时,除非您自己在服务器端代码中清除文本框,否则文本框仍将包含在单击按钮之前键入的内容

实际上,文本框中的数据存储在隐藏的viewstate字段中,并在页面刷新时再次加载到文本框中。viewstate看起来像一团乱麻,因为它是base64编码的。您也可以自己手动将内容存储在viewstate中。在页面的页面加载事件中,只需执行以下操作:

this.ViewState["someVariable"] = "some value";
现在,如果您在空白web表单上执行此操作,当您加载页面时,您将在html中看到一个viewstate字段,与您粘贴的字段类似(除了更小的字段)。如果从该隐藏字段复制值并将其粘贴到viewstate解码器()中,您将看到值为“some value”的某个变量

现在,在表单上放置一个按钮,并在按钮的“点击偶数”中执行以下操作:

Response.Write(this.ViewState["someVariable"].ToString());
你会看到“一些价值”写在页面上。您所做的是在viewstate中手动存储一些内容,它被呈现到该隐藏字段中的页面,然后该隐藏字段被发布回服务器,您从中读取数据以显示数据

这是web表单的主要功能。MVC不使用viewstate。MVC依赖于另一种称为模型绑定的技术,这超出了您的问题范围。谷歌“asp.NETMVC模型绑定”获取更多关于mvc如何跨帖子维护信息的信息

稍微偏离主题的viewstate笑话示例:

我有一个相当大的社区网站叫U413。我最近重新设计了它,使用ASP.NETMVC2.0。这是一个程序员的社区,他们一直在嘲笑我使用webforms。既然它不使用webforms,我决定和它们开个小玩笑。MVC不使用viewstate,但我进入了一个网络表单,生成了一个包含一些数据的viewstate,并在我的MVC应用程序中将隐藏字段手动粘贴到我的视图中

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjkPFgIeE1U0MTNTZWNyZXRBY2Nlc3NLZXkFM2h0dHA6Ly93d3cudTQxMy5jb20vQ29udGVudC9VNDEzU2VjcmV0QWNjZXNzS2V5LmpwZ2RkpshYUvbSiUuE0YaYNBH0rvTGj4qEcquSqQeUs9ZpuIQ=" />


已经有几个人窥探html源代码,希望找到一些小秘密或漏洞,并遇到了这个问题。他们立刻破译了它,笑得很开心。如果您想查看,请复制该值并将其粘贴到我之前链接的解码器中。

在这种情况下,ASP.NET MVC将比ASP.NET站点更快?因为在最终的HMTL源代码中有很多行@从技术上讲,html代码越少,页面大小就越轻。速度是可变的,很多因素会影响网站性能,如带宽、客户端互联网速度、服务器性能等。有小到无可视状态可以帮助浏览器更好地分析页面的启动,但这并不一定把MVC作为更好的产品。ViewState是自切片面包以来最好的东西!您必须仔细管理视图状态数据的大小。它可以快速地增加页面,并使页面膨胀。好奇的是,你会接受这个问题的答案吗?因此,Web表单占用了更多的网站资源并使其变慢了吗?不,它会将一些数据从数据库移动到用户的Web浏览器。有时慢,有时快。