繁体   English   中英

如何在ASP.NET Web应用程序中设置表单变量?

[英]How to set form variable in ASP.NET web app?

我正在创建一个网页,该网页可以将SAMLResponse(以及其他属性)从SiteMinder重定向到客户端的Identity Server。 我可以像这样在前端设置表单变量:

<asp:hiddenfield id="SAMLResponse" runat="server" ></asp:hiddenfield>

在后端,我从请求InputStream解析SAML值,如下所示:

private string RequestBody()
{
     var bodyStream = new StreamReader(HttpContext.Current.Request.InputStream);
     bodyStream.BaseStream.Seek(0, SeekOrigin.Begin);
     string bodyText = bodyStream.ReadToEnd();
     return bodyText.Substring(bodyText.IndexOf("=") + 1);
}

通过一些日志记录语句,我可以看到我已经成功解析了SAMLResponse值,但是当我通过asp:hiddenfield或document.getElementById将saml_response值传递给Web表单时,该值显示为空白。 但是,对值进行硬编码是可行的。 这是我将值从后端传递给hiddenfield / form元素时的样子:

saml_response = RequestBody();
SAMLResponse.Value = saml_response;

我已经尝试了上述方法,下面的方法(前端)都适用于硬编码,但是在尝试传递已解析的SAML响应时却没有:

var samlresponse = "<%=saml_response%>";
document.getElementById("SAMLResponse").Value = samlresponse;

我正在绘制空白,并且整日都被卡住了! 关于为什么这不起作用或应该如何进行的任何建议? 我认为这可能与异步运行并覆盖变量值的进程有关,但我不确定。

提前致谢!

编辑:我发现SiteMinder正在发送第一个请求,一个POST(带有SAML),然后其他事情触发了GET。 第二个请求是再次触发我的后端代码并覆盖SAMLResponse。 尽管有不同的要求,是否有任何方法可以保留原始值?

在代码隐藏中尝试将此值传递给设置hiddenfield的javascript函数。

System.Web.UI.ScriptManager.RegisterClientScriptBlock(this.Page, typeof(string), "SetResponse", "SetResponse('" + saml_response + "');", true);

Javascript:

 function SetResponse(Res) {

            var data = Res;

            $(function () {
              $('#SAMLResponse').val(data);
                          });


        }

在脚本开始之前添加jQuery库

<script src="../jquery/jquery-1.7.js" type="text/javascript"></script>

还请继续并在该功能中设置一个警报alert(“ works yo”); 我们需要确保脚本在执行该功能之前没有中断。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM