我刚开始学习ASP.Net。我试图弄清楚页面处理的原理。我得到了一些关于ViewState和Html Control的问题。
<input type="text" id="FirstName" />
<br />
<input type="text" id="LastName" runat="server" />
这是我的HTML。我填写了两个文本框,然后单击“提交”。在服务器上运行的控件保持值而另一个没有。
我检查类HtmlInputText,发现它实现了接口IPostBackDataHandler,所以它不会受ViewState的影响? (我通过某人的博客知道,是吗?)
我对ViewState的想法是保持每个控件的变化消息的想法。页面中的控件将根据默认设置和ViewState进行初始化。
但我仍然无法弄明白: ViewState是否保留“FirstName”的更改消息? Web Control就像在服务器上运行的HTML Control一样,它们都实现了接口IPostBackDataHandler,所以ViewState没用了?
请帮助我理解ViewState的使用或其他......(我搞砸了......)
答案 0 :(得分:0)
ViewPage继承自Page类。所以它是一个“WebForm”,它有一个代码隐藏,所以你可以直接请求页面。如果你使用一个会执行正常回发的控件,就会发生回发,在这种情况下你已经添加了WebForm行为,这不是我们应该做的(混合它们),你应该确保一个动作方法而是执行控制器。在最终版本中将有一些控件而不是执行“回发”,确保将执行Action方法。您无法从Controller访问ViewState,因此它不会在控制器级别上访问。如果你有一个使用ViewState的控件,并按下一个“按钮”或“链接”,这将确保执行一个Action方法,ViewState将不会被发布,在这种情况下,控件将从ViewState获取数据它是空。因此,如果需要ViewState,控件将无效。
希望这会有所帮助 源:其中Link&GT;