-->

访问__VIEWSTATE&__EVENTVALIDATION在C#(Access __VIEWST

2019-09-23 16:54发布

在ASP.NET ,是有可能得到__VIEWSTATE和__EVENTVALIDATION隐藏字段的值到C#(服务器端)中,让我们说,重写一个变量Render方法?

我努力了:

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的值时,第一个提出要求,而不是回发完成后。 当如果所述第一请求时形成的输出流是。

Answer 1:

如果你看一下Page使用反射类,你会看到这些隐藏字段中呈现阶段创建(看方法RenderViewStateFieldsEndFormRenderHiddenFields )。

你也许可以得到一些/所有的数据使用反射(如内部属性Page.ClientState )。

但我不认为这是一个干净的解决方案(虽然说实话,我真的不明白你想达到什么目的)。



Answer 2:

为了得到你应该使用HTML敏捷性包的事件验证。

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;
}


文章来源: Access __VIEWSTATE & __EVENTVALIDATION in C#