【问题标题】:Submit a form from code behind从后面的代码提交表单
【发布时间】:2012-04-04 12:18:32
【问题描述】:

我在我的 c#/asp.net 应用程序上实现功能时遇到问题。

我有一个带有 RadioButtonList 和提交按钮的表单。 RadioButtonList 是在Page_Load() 上从我从数据库中检索到的对象列表中生成的。 如果列表中只有 1 个对象,我想自动提交表单。

我可以访问我的 Form 对象、提交按钮等...但我似乎找不到解决方案(最后我正在寻找一种 form.Submit() )方法。

有人知道我该怎么做吗?

提前致谢!

编辑>>这里是代码:

.aspx : http://pastebin.com/0E6T7dqH

.aspx.cs : http://pastebin.com/54payZJP

EDIT2 >>>

因为似乎没有办法做我一开始想做的事情,所以我最终使用了一个带有 response.redirect() 的会话变量

来源: http://dotnetslackers.com/Community/blogs/haissam/archive/2007/11/26/ways-to-pass-data-between-webforms.aspx

【问题讨论】:

  • 请发布您尝试过的内容。
  • 我试图找到一种提交给定表单的方法,但似乎不存在。然后我试着看看我是否可以模拟一个 button.click,似乎也不存在。我还尝试了 response.write() 以使用 javascript 提交表单,也许这是可能的,但这不是一个非常“漂亮”的解决方案。最后,唯一的方法似乎是将我的帖子数据直接发送到表单指向的页面,但我感觉就像用火箭筒杀死一只蚂蚁(并且将 POST 数据发送到另一个页面似乎在 *ss 中很痛苦,因为好)

标签: c# asp.net


【解决方案1】:

发布发生在客户端。与您当前在服务器端执行的 Page_Load 一样,只需在 post 上调用您要执行的代码即可。

编辑:实际上去另一个aspx

public void Page_Load(object sender, EventArgs e) {
    if(!IsPostback && OnlyOneItem) {
        Server.Transfer("TheOtherPage.aspx");
    }
}

Server.Transfer 将维护整个请求,因此您的帖子数据将可用。

http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.transfer.aspx

【讨论】:

  • 表单指向另一个页面,我在该页面上检索帖子数据。所以对我来说唯一的解决方案是手动将帖子数据从代码隐藏发送到另一个页面?
  • 你可以使用 Server.Transfer 或者,最坏的情况,Response.Redirect
  • 是的,但我需要获取我的 POST 数据,我不确定是否可以使用这些方法进行传输
  • 您不了解 ASP.NET 页面的工作方式。如果你在代码隐藏中,你已经得到了你的数据。您只需将其发送到下一页。如果您需要更具体的帮助,请向我们展示所有代码(您的 2 页代码正面和代码隐藏)。
  • 我知道我已经得到了我的数据,但是为了将它发送到下一页,我需要创建自己的 POST 请求等......,鉴于我只需要提交一个表单/单击一个按钮即可执行完全相同的操作...再说一次,我很可能不了解某些特定的 ASP.net 内容,因为我是新手(我通常使用 Java)。无论如何,我仍然不知道该怎么做,所以我在问题中添加了代码。再次感谢!
【解决方案2】:

试试这样的

在你的Page_Load

if(!IsPostBack)
{
      if(check for only one object)
      {
         //your submit code
      }
}

【讨论】:

    【解决方案3】:

    我实际上不得不做一次类似的事情。这是您可以做到的一种方法。

    Asp.Net 按钮有一个名为 PostBackUrl 的属性,它完全符合您的预期 - 如果您单击按钮,它控制表单的发布位置。

    您还可以使用RegisterStartupScript 函数在页面上呈现javascript。

    现在,有了这两块,你就可以实现你的目标了。

    if(!IsPostBack)
    {
        if(results == 1)
        {
            button.PostBackUrl = "next page's url"
            //Register script to click the button using RegisterStartupScript
        }
    }
    

    现在,已经向您展示了这一点,我会警告您,它可能不会带来最佳的用户体验。当我这样做时,它是针对一个没有其他解决方案的非常具体的案例。该页面实际上将回传给用户,并且在单击按钮的 javascript 生效之前,他们将看到该页面片刻。此外,当您设置按钮的 PostBackUrl 时,这意味着当它被单击时,您的整个表单将被发布到指定的页面。当前页面背后的代码根本不会触发,所以如果你有任何验证,它就不会运行。

    让用户点击按钮提交表单并没有错,即使他们只有一个选择。根据我的经验,用户喜欢感觉自己可以控制系统。他们不喜欢页面只是在没有他们输入的情况下做事。

    此外,将下一页所需的信息放入会话甚至数据库表中并使用Response.Redirect 并没有什么问题。这是一种相当普遍的做法,并且在大多数情况下都能可靠地工作。

    【讨论】:

    • 感谢您的回答。我已经为按钮使用了 PostBackUrl(看看我的 .aspx 文件,我直接把它放在那里)。我得出了与您相同的结论:执行一些 JS 代码是可能的,但可能不是最佳实践。所以最后我确实像你建议的那样使用了一个会话变量,然后是 Response.Redirect,然后我就销毁了这个变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 2019-04-26
    • 2013-09-21
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多