C# 将iframe添加到Web表单asp.net

C# 将iframe添加到Web表单asp.net,c#,html,asp.net,iframe,webforms,C#,Html,Asp.net,Iframe,Webforms,我必须在web表单中添加iframe。我必须从API调用中获取url到第三方服务,该服务包含支付服务并显示iframe。我使用的是ASP.NET 4.5和C#6.0版本 这是网络表单代码。iframe代码是从asp.net mvc代码复制而来的,在asp.net mvc代码中也实现了该iframe。我正在尝试在webforms中实现类似的功能。我知道WebFrom中没有模型 MyWebform.aspx <%@ Page Language="C#" AutoEventW

我必须在web表单中添加iframe。我必须从API调用中获取url到第三方服务,该服务包含支付服务并显示iframe。我使用的是ASP.NET 4.5和C#6.0版本

这是网络表单代码。iframe代码是从asp.net mvc代码复制而来的,在asp.net mvc代码中也实现了该iframe。我正在尝试在webforms中实现类似的功能。我知道WebFrom中没有模型

MyWebform.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyWebform.aspx.cs" Inherits="MyWebform" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
   
<div class="row ">
         <div class="col-md-12">
            <div class="panel panel-primary panel-title">
            <div class="panel-heading text-bold">My Component Iframe</div>
            <div class="panel-body">
                <iframe id="thirdPartyiframe" name="client" style="width: 100%; height: 600px; position: center; left: 0; top: 0; border: thick"></iframe>
                <form action="@MyModel.IframeUrl" id="initForm" target="client" method="POST" style="display:none">
                    <input name="BEARER-TOKEN" value="@MyModel.AgentAccessToken"/>
                    <input name="REFRESH-TOKEN" value="@MyModel.AgentRefreshToken"/>
                </form>
            </div>
        </div>

    </div>
</div>
 
    
    <script>
        document.getElementById("initForm").submit();
    </script>
</body>
</html>

<asp:Content ID="content" ContentPlaceHolderID="ContentPlaceHoldeMyForm"  runat="server">
<div class="row ">
         <div class="col-md-12">
            <div class="panel panel-primary panel-title">
            <div class="panel-heading text-bold">My Component Iframe</div>
            <div class="panel-body">
                <iframe id="thirdPartyiframe" name="client" style="width: 100%; height: 600px; position: center; left: 0; top: 0; border: thick"></iframe>
                <form action="<%= Session["IframeUrl"].ToString() %>" id="initForm" target="client" method="POST" style="display:none">
                    <input name="BEARER-TOKEN" value="<%= Session["AgentAccessToken"].ToString() %>"/>
                    <input name="REFRESH-TOKEN" value="<%= Session["AgentRefreshToken"].ToString() %>"/>
                </form>
            </div>
        </div>

    </div>
</div>
paymentSessionResponse对象将具有我需要分配的结果iframe url。调试时,控件从不转到页面加载方法


你知道我该如何做到这一点吗?我需要使用用户控件吗?

我们可以这样做-

MyWebform.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyWebform.aspx.cs" Inherits="MyWebform" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
   
<div class="row ">
         <div class="col-md-12">
            <div class="panel panel-primary panel-title">
            <div class="panel-heading text-bold">My Component Iframe</div>
            <div class="panel-body">
                <iframe id="thirdPartyiframe" name="client" style="width: 100%; height: 600px; position: center; left: 0; top: 0; border: thick"></iframe>
                <form action="@MyModel.IframeUrl" id="initForm" target="client" method="POST" style="display:none">
                    <input name="BEARER-TOKEN" value="@MyModel.AgentAccessToken"/>
                    <input name="REFRESH-TOKEN" value="@MyModel.AgentRefreshToken"/>
                </form>
            </div>
        </div>

    </div>
</div>
 
    
    <script>
        document.getElementById("initForm").submit();
    </script>
</body>
</html>

<asp:Content ID="content" ContentPlaceHolderID="ContentPlaceHoldeMyForm"  runat="server">
<div class="row ">
         <div class="col-md-12">
            <div class="panel panel-primary panel-title">
            <div class="panel-heading text-bold">My Component Iframe</div>
            <div class="panel-body">
                <iframe id="thirdPartyiframe" name="client" style="width: 100%; height: 600px; position: center; left: 0; top: 0; border: thick"></iframe>
                <form action="<%= Session["IframeUrl"].ToString() %>" id="initForm" target="client" method="POST" style="display:none">
                    <input name="BEARER-TOKEN" value="<%= Session["AgentAccessToken"].ToString() %>"/>
                    <input name="REFRESH-TOKEN" value="<%= Session["AgentRefreshToken"].ToString() %>"/>
                </form>
            </div>
        </div>

    </div>
</div>

我的组件Iframe
对于代码隐藏,我们可以像这样设置会话并拨打电话

MyWebform.aspx.cs

public partial class MyWebform : System.Web.UI.Page
{
   
    private MyClient _apiClient;

    public MyWebform()
    {
    }


    protected async Task Page_Load(object sender, EventArgs e)
    {
        var model = new PaymentRequestModel
        {
            FirstName = "John",
            Surname = "Smith",
            Email = "smith.john@gmail.com",
            Street1 = "",
            City = "Indianapolis",
            State = "IN",
            Country = "USA",
            Zip = "",
            Currency = "USD",
            Amount = 100.00,
            AgentId = "5551",
            AccountConfigurationId = 1,
                    
        };
        CreateSessionResponse paymentSessionResponse  = await _apiClient.MakePaymentSession(model);

        //assign iframe url - TO DO
        string url = paymentSessionResponse.IframeUrl;  
  
        //assign tokens
        string accToken =  paymentSessionResponse.accToken;
        string refToken = paymentSessionResponse.refToken;
    }
   
   
}
 public async void MainMethod()
 {
    var res = await GetDetails();
    SetSessions(res);
 }

 public void SetSessions(CreateSessionResponse obj)
 {
        Session["AgentAccessToken"] = obj.agentAccessToken;
        Session["AgentRefreshToken"] = obj.AgentRefreshToken;
        Session["IframeUrl"] = obj.IframeUrl;
 }


 protected async Task<paymentSessionResponse> GetDetails()
    {
        var model = new PaymentRequestModel
        {
            FirstName = "John",
            Surname = "Smith",
            Email = "smith.john@gmail.com",
            Street1 = "",
            City = "Indianapolis",
            State = "IN",
            Country = "USA",
            Zip = "",
            Currency = "USD",
            Amount = 100.00,
            AgentId = "5551"                                
        };
        CreateSessionResponse paymentSessionResponse  = await 
       _apiClient.MakePaymentSession(model);
       
        return paymentSessionResponse;
      
    }

公共异步void main方法() { var res=等待获取详细信息(); 设置会话(res); } 公共无效设置会话(CreateSessionResponse obj) { 会话[“AgentAccessToken”]=obj.AgentAccessToken; 会话[“AgentRefreshToken”]=obj.AgentRefreshToken; 会话[“IframeUrl”]=obj.IframeUrl; } 受保护的异步任务GetDetails() { var模型=新的PaymentRequestModel { FirstName=“约翰”, 姓氏=“史密斯”, Email=“史密斯。john@gmail.com", 街道1=“”, 城市=“印第安纳波利斯”, State=“IN”, Country=“美国”, Zip=“”, 货币=“美元”, 金额=100.00, AgentId=“5551” }; CreateSessionResponse paymentSessionResponse=等待 _apiClient.MakePaymentSession(模型); 返回paymentSessionResponse; }
尝试在
@页面
方向中添加
Async=“True”
,在代码隐藏中以编程方式分配iframe url和令牌的任何方法?为iframe添加runat属性