C# “发布到另一个页面”网站可以正常工作,但在此过程中会显示一个空白页面

C# “发布到另一个页面”网站可以正常工作,但在此过程中会显示一个空白页面,c#,javascript,.net,asp.net,paypal,C#,Javascript,.net,Asp.net,Paypal,我将值从ASP.NET网站发布到一个完全不同的网站(实际上是Paypal)。我通过向用户返回一个包含所有隐藏表单输入的页面,然后返回一个自动提交表单的Javascript函数来实现这一点 这个过程应该是无缝的,但是空白页面在它出现的几秒钟内是值得注意的。用户只需单击ASP.NET页面上的按钮,然后被重定向到Paypal。但是我把中间的空白页注入中间变量(比如帐单信息、订单项等)。空白页太明显了,我希望能有更好的方式来做这件事,或者让这个过程看起来更加无缝。 以下是我正在使用的方法: pu

我将值从ASP.NET网站发布到一个完全不同的网站(实际上是Paypal)。我通过向用户返回一个包含所有隐藏表单输入的页面,然后返回一个自动提交表单的Javascript函数来实现这一点

这个过程应该是无缝的,但是空白页面在它出现的几秒钟内是值得注意的。用户只需单击ASP.NET页面上的按钮,然后被重定向到Paypal。但是我把中间的空白页注入中间变量(比如帐单信息、订单项等)。空白页太明显了,我希望能有更好的方式来做这件事,或者让这个过程看起来更加无缝。 以下是我正在使用的方法:

    public static void PostToRemote(string url, Dictionary<string, string> inputs)
    {
        if (String.IsNullOrEmpty(url))
            return;

        HttpContext context = HttpContext.Current;

        //CREATE UNIQUE FORM NAME
        string formName = "remoteform1";

        //ERASE ENTIRE RENDER OF CURRENT PAGE
        context.Response.Clear();

        //OUTPUT SINGLE FORM TO POST DATA
        context.Response.Write("<html><head></head>");

        //ON LOAD, PAGE WILL POST FORM TO NEW URL
        context.Response.Write(String.Format("<body onload=\"document.{0}.submit()\">", formName));
        context.Response.Write(String.Format("<form name=\"{0}\" method=\"{1}\" action=\"{2}\" >", formName, "post", url));

        //ADD PARAMETERS TO PAGE TO POST
        foreach (var item in inputs)
        {
            context.Response.Write(String.Format("<input name=\"{0}\" type=\"hidden\" value=\"{1}\">", item.Key, item.Value));
        }

        context.Response.Write("</form>");
        context.Response.Write("</body></html>");

        context.Response.End();
    }
publicstaticvoidposttoremote(字符串url、字典输入)
{
if(String.IsNullOrEmpty(url))
回来
HttpContext=HttpContext.Current;
//创建唯一的表单名称
字符串formName=“remoteform1”;
//擦除当前页面的整个呈现
context.Response.Clear();
//输出单个表单以发布数据
context.Response.Write(“”);
//加载时,页面将把表单发布到新的URL
context.Response.Write(String.Format(“,formName));
Write(String.Format(“,formName,“post”,url));
//将参数添加到要发布的页面
foreach(输入中的var项)
{
Write(String.Format(“,item.Key,item.Value));
}
context.Response.Write(“”);
context.Response.Write(“”);
context.Response.End();
}

有什么建议可以让用户更无缝或更愉快?谢谢

您可以做的不是将paypal表单写入响应流,而是创建一个单独的asp.net页面,并在该页面中使用asp.net repeater或类似控件将paypal表单信息写入。为编写的表单指定一个名称,以便您可以通过javascript访问它-出于本例的目的,我们假设您将表单命名为“paypal”(id=“paypal”)。见下文:

接下来放置一个带有动画gif的图像标签,这是某种进度微调器。好的,现在是重要的部分:在页面中添加一个小JavaScript函数,该函数将负责将paypal表单发布到paypal服务器。请参见以下示例:

function submitform()
{
    document.forms["paypal"].submit();
}
现在,您只需从页面的body标记调用此“submitform()”函数,如下所示:

<body onload="submitform()">

这就是整个事情的样子

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body onload="submitform()">
    <div style="text-align: center;">
        <h1>
            Redirecting to PayPal</h1>
        <img src="http://www2.lionair.co.id/assets/imgs/ajax-loader.gif" />
    </div>
    <form id="form1" runat="server">
        <!--This is where you write out the paypal form data - use a repeater or create a custom control-->
    </form>
    <script type="text/javascript">
function submitform()
{
    document.forms["paypal"].submit();
}
    </script>
</body>
</html>

无标题页
重定向到贝宝
函数submitform()
{
document.forms[“paypal”].submit();
}
当您运行此页面时,首先加载的是微调器图像,然后javascript将值发布到paypal,让您获得所需的效果

希望这是有帮助的


享受吧

您可以做的不是将paypal表单写入响应流,而是创建一个单独的asp.net页面,并在该页面中使用asp.net repeater或类似控件将paypal表单信息写入。为编写的表单指定一个名称,以便您可以通过javascript访问它-出于本例的目的,我们假设您将表单命名为“paypal”(id=“paypal”)。见下文:

接下来放置一个带有动画gif的图像标签,这是某种进度微调器。好的,现在是重要的部分:在页面中添加一个小JavaScript函数,该函数将负责将paypal表单发布到paypal服务器。请参见以下示例:

function submitform()
{
    document.forms["paypal"].submit();
}
现在,您只需从页面的body标记调用此“submitform()”函数,如下所示:

<body onload="submitform()">

这就是整个事情的样子

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body onload="submitform()">
    <div style="text-align: center;">
        <h1>
            Redirecting to PayPal</h1>
        <img src="http://www2.lionair.co.id/assets/imgs/ajax-loader.gif" />
    </div>
    <form id="form1" runat="server">
        <!--This is where you write out the paypal form data - use a repeater or create a custom control-->
    </form>
    <script type="text/javascript">
function submitform()
{
    document.forms["paypal"].submit();
}
    </script>
</body>
</html>

无标题页
重定向到贝宝
函数submitform()
{
document.forms[“paypal”].submit();
}
当您运行此页面时,首先加载的是微调器图像,然后javascript将值发布到paypal,让您获得所需的效果

希望这是有帮助的


享受吧

为什么不在页面上用按钮发布表单?为什么不在页面上用按钮发布表单?谢谢,但我认为问题是不能有嵌套表单。这就是为什么要首先创建解决方案。@杜鲁门-我确实理解asp.net中两个表单的问题-这就是为什么要用javascript发布表单-仔细看看并尝试一下out@TruMan你不能有嵌套表单,但你可以在一个页面上有两个表单。谢谢,但我认为问题是不能有嵌套的表单。这就是为什么要首先创建解决方案。@杜鲁门-我确实理解asp.net中两个表单的问题-这就是为什么要用javascript发布表单-仔细看看并尝试一下out@TruMan你不能有嵌套的表单,但是你可以在一个页面上有两个表单。