首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中访问__VIEWSTATE和__EVENTVALIDATION

在C#中访问__VIEWSTATE和__EVENTVALIDATION
EN

Stack Overflow用户
提问于 2012-10-09 01:03:50
回答 2查看 2.1K关注 0票数 2

ASP.NET中,有没有可能将__VIEWSTATE和__EVENTVALIDATION隐藏字段的值放入C# (服务器端)的变量中,比如覆盖Render方法?

我试过了:

代码语言:javascript
复制
protected override void Render(HtmlTextWriter writer)
{
    StringBuilder stringBuilder = new StringBuilder();
    StringWriter stringWriter = new StringWriter(stringBuilder);
    HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);

    base.Render(htmlWriter);
    string temp = stringBuilder.ToString();
}

这给出了整个ASP.NET输出。有没有更好的方法来做这件事?

我实际需要的是在发出第一个请求时而不是在回发完成之后的__VIEWSTATE & __EVENTVALIDATION的值。这是在发出第一个请求时形成输出流的时候。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-09 15:54:43

如果您使用Reflector查看Page类,您将看到这些隐藏字段是在呈现阶段创建的(请查看RenderViewStateFieldsEndFormRenderHiddenFields方法)。

您可能会使用反射获取部分/所有数据(例如,内部属性Page.ClientState)。

但我不认为有一个干净的解决方案(尽管老实说,我并不是真的理解你想要实现的目标)。

票数 1
EN

Stack Overflow用户

发布于 2014-02-08 02:21:41

要获得事件验证,您应该使用HTML Agility Pack。

代码语言:javascript
复制
var eventValidation = HapHelper.GetAttributeValue(htmlDocPreservation, "__EVENTVALIDATION", "value");

public static string GetAttributeValue(HtmlDocument doc, string inputName, string attrName)
{
    string result = string.Empty;

        var node = doc.DocumentNode.SelectSingleNode("//input[@name='" + inputName + "']");
        if (node != null)
        {
            result = node.Attributes[attrName].Value;
        }


    return result;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12786199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档