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

标签 c# asp.net .net forms http

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

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

在后端,我正在解析来自 Request 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。尽管这是一个不同的请求,但有什么方法可以保留原始值吗?

最佳答案

在您的代码隐藏中尝试将值传递给设置隐藏字段的 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"); 我们需要确保脚本在执行该函数之前不会中断。

关于c# - 如何在 ASP.NET Web 应用程序中设置表单变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51644913/

相关文章:

c# - Azure 网站上的 "DataReader.GetFieldType(...) returned null"

c# - 如何将 LINQ 数据绑定(bind)到下拉列表

c# - MVC asp.net 从网络文件夹加载图像

c# - 像VS那样实现一个窗口管理器就可以了

.net - 如何从 kubernetes 部署配置文件中的 helm 获取运行时设置以覆盖 asp.net 中的 appsettings

c# - 你如何制作一个包含多个 "Pages"的程序?

c# - 创建应用程序图标的最佳方式

.net - 使用 powershell 解析程序集依赖项引用

javascript - 服务器中的 ddl 未更新 - asp.net

asp.net - 我们可以将 SQL Server 数据库文件转换为 SQLite 文件或 .db 文件吗?