【问题标题】:How to know if button has been clicked on another page?如何知道按钮是否已在另一个页面上单击?
【发布时间】:2015-11-18 00:43:54
【问题描述】:

我有一个名为 Upload 的文件,用于上传图片。其他文件然后调用此上传文件。问题是我需要知道单击了哪个上传按钮,因为一个按钮需要将图像保存在与其他上传按钮不同的路径文件中。我尝试创建一个会话,但每次加载页面时都会创建会话,所以这不起作用。处理上传的代码位于 iframe 中。当我单击上传按钮时,会出现 iframe,它提供了从您的计算机中选择文件并上传的选项。我需要将 ShowUploadImage() 函数中的值传递给 iframe,这样我就知道点击了哪个上传按钮。

这是上传按钮后面的代码:

 function ShowUploadImage() {
        $('#dvAddEditImage').fadeIn(300);
        $("#dvAddImage").html("<img src=\"images/loading.gif\" alt=\"Loading...\" title=\"Loading...\" />");
        $("#dvAddImage").fadeIn(300);
        $("#dvAddImage").html("<iframe id=\"iframeUpload\" src='utilities/UploadPOD.aspx'></iframe>");
        Session["Session"] = "Upload";
    }

我将 Session 添加到 Page_Load。但是现在每次都创建会话,这不是我需要的。

protected void Page_Load(object sender, EventArgs e)
    {
            Session["Session"] = "Upload";
        }

    }

然后在上传文件中我需要检查点击了哪个按钮:

if (fuUpload.HasFile)
            {
                string JobType = Convert.ToString(Session["Session"]);
                Session["Session"] = null;
                if (JobType == "Upload")
                {

                }
                else
                {

                }
           }

也许使用会话不是正确的方法?如何在不同的代码文件之间传递值?

编辑

Ok 添加了隐藏字段:

<asp:HiddenField ID="hfSession" runat="server" Value="Upload" />

并添加到上传按钮:

function ShowUploadImage() {
        $('#dvAddEditImage').fadeIn(300);
        $("#dvAddImage").html("<img src=\"images/loading.gif\" alt=\"Loading...\" title=\"Loading...\" />");
        $("#dvAddImage").fadeIn(300);
        $("#dvAddImage").html("<iframe id=\"iframeUpload\" src='utilities/UploadPOD.aspx'></iframe>");
        document.getElementById('<%= hfSession.ClientID %>').value = "Upload"; 
    }

那么我如何在其他页面文件中调用这个隐藏字段。这2个文件没有联系,那么隐藏字段的值怎么传呢?

【问题讨论】:

  • 你为什么不向这个上传页面发送一个带有所需路径的参数?像这样创建你的 iframe:&lt;iframe id=\"iframeUpload\" src='utilities/UploadPOD.aspx?targetPath=X'&gt;&lt;/iframe&gt; 然后使用这个参数生成一个hidden 字段......
  • "每次加载页面时都会创建会话,因此无法正常工作。"它不应该。还有很多方法可以通过触发器。例如缓存、cookies,并在页面之间将其作为参数传递......
  • @DontVoteMeDown UploadPOD.aspx 是目标路径。其他上传按钮使用相同的路径,所以我需要一种方法来检查点击了哪个上传按钮
  • @JaredT 我只希望在单击上传按钮时创建会话。如果每次加载页面时都会创建它,那么我无法判断点击了哪个上传按钮
  • 只需在表单中添加一个隐藏字段并在单击按钮时填充它,并使用一个标识符告诉您它是哪个按钮。您可以检查该服务器端并做出相应的反应。

标签: javascript c# jquery asp.net session


【解决方案1】:

在 iframe 的 URL 中添加一些内容,但要为每个按钮设置不同的内容...

function ShowUploadImage() {
    $('#dvAddEditImage').fadeIn(300);
    $("#dvAddImage").html("<img src=\"images/loading.gif\" alt=\"Loading...\" title=\"Loading...\" />");
    $("#dvAddImage").fadeIn(300);
    $("#dvAddImage").html("<iframe id=\"iframeUpload\" src='utilities/UploadPOD.aspx?id=upload1'></iframe>");
}

然后在您的服务器端代码中,检查查询字符串中传递的值...

if (Request.QueryString["id"] == "upload1")
{
    // do something here
}

对另一个按钮执行相同操作,但在查询字符串中传递不同的值。

【讨论】:

  • 不用担心。很高兴帮助:)
  • 不错的答案。 @user123456789 这就是我在评论中试图说的;)
【解决方案2】:

如果您只想将点击按钮的值从一个页面传递到另一个页面,也许您可​​以尝试在 ShowUploadImage() 方法中使用 sessionStorage。 在该方法中设置一个值并在另一个页面中检索相同的东西

类似的东西

function ShowUploadImage() {
    $('#dvAddEditImage').fadeIn(300);
    $("#dvAddImage").html("<img src=\"images/loading.gif\" alt=\"Loading...\" title=\"Loading...\" />");
    $("#dvAddImage").fadeIn(300);
    $("#dvAddImage").html("<iframe id=\"iframeUpload\"  src='utilities/UploadPOD.aspx'></iframe>");

    sessionStorage.setItem("action", "Upload");
}

然后在另一个页面上写下你需要在 javascript 中获取它的任何地方

sessionStorage.getItem("action");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    相关资源
    最近更新 更多