ASP.net页面上的表单标签

时间:2009-05-29 15:07:01

标签: asp.net

我有一个Web应用程序,其中有一个页面可以加载数据库中的内容。我希望能够在动态内容中放置一个表单,但.net不会让内部表单执行它的动作。有没有办法允许这种或其他方式我可以在动态内容页面上获取表单?

感谢。

- 编辑 -

我想我需要澄清一些事情。这是一个从数据库加载内容的aspx页面。据我所知,我从数据库中提取并粘贴在Label中的文本永远不会被.net wp编译或处理,因此我无法使用后面的代码来解决这个问题。

8 个答案:

答案 0 :(得分:5)

如果您希望将非回传表单发送到第三方网站(例如PayPal按钮),这是一个常见问题。

出现问题是因为HTML不允许您在表单中使用表单,并且大多数ASP.NET页面在HTML(或主页面)中都有<form runat="server" />“高位”。

我最喜欢的解决方案是隐藏“高位”表格标签,同时仍然显示所有内容。然后,您可以随意转储您想要的任何标签。如果您动态执行此操作,则可以逐页选择哪些页面具有自定义表单。

我创建了一个名为GhostForm.cs的类来处理这个问题。你可以在这里阅读所有相关内容:

http://jerschneid.blogspot.com/2007/03/hide-form-tag-but-leave-content.html

答案 1 :(得分:4)

页面上只能有一个表单(asp表单);你不得不以某种方式使用那种形式。

澄清一下,只能处理一个表格。

答案 2 :(得分:1)

不是网络表格,没有。您必须使用连接到ButtonLinkButton的事件处理程序在单页整页表单中工作。幸运的是,这很容易做到:

foo.aspx:

...
<asp:TextBox id="txtFoo" runat="server" />
<asp:Button id="btnFoo" runat="server" onclick="btnFoo_Click />
...

foo.aspx.cs:

...
protected void btnFoo_Click(object sender, EventArgs e)
{
    string s = txtFoo.Text;
    // do something with s
}
...

答案 3 :(得分:1)

Dino Esposito有一篇来自MSDN杂志的文章,内容涉及处理ASP.Net中的多个表单或“模拟”子表单,可能只回答您的所有问题。

http://msdn.microsoft.com/en-us/magazine/cc164151.aspx

答案 4 :(得分:0)

您要么通过向服务器端单击事件处理程序添加“sub-forms”提交按钮来处理回发(这是web formas在同一页面上处理多个提交类型buut的方式)或者如果你不想要一个完整的帖子,那么用AJAX做聪明的事情

答案 5 :(得分:0)

之前我遇到过这个问题。我所做的一个解决方法是将我希望我的操作的代码放在asp:Panel内部。使用面板,您可以将“DefaultButton”的属性设置为面板内的按钮,单击按钮(或按“enter”)将触发该按钮的单击事件。当我有一个包含唯一允许的asp:Form的母版页时,当我想通过按Enter键提交“表单”时,我发现这非常方便。

希望这有帮助。

答案 6 :(得分:0)

任何解决方法都是黑客而且非常难看。通过设计,asp.net使用表单标签来发布和获取数据。这就是他们称之为Web窗体应用程序的原因。 Html不允许嵌套表单。你想要做的是在你的代码中使用WebRequest。

如果你正在尝试像paypal按钮这样的东西,你可以简单地使用这样的东西。

标记:

<div id="PayPalButtonContainer" runat="server"></div>

代码背后:

    public static string GetPayPalButtonMarkup()
    {
        const string markup = @"https://www.paypal.com/cgi-bin/webscr
                                  ?cmd=_xclick&business={0}
                                  &item_name=Widget
                                  &amount={1}
                                  &currency_code=USD";
        return markup;
    }

    PayPalButtonContainer.InnerHtml = string.format(GetPayPalButtonMarkup,"YOUR PAYPAL USER NAME", "YOUR PRICE VALUE");

答案 7 :(得分:0)

当我第一次遇到这个问题时,我发现对我来说最简单的解决方案是简单地复制并粘贴Master页面并给它一个稍微不同的名称,如:

SiteNameMasterPage      'Default page with FORM tag
SiteNameMasterPageNF    'No Form tag

然后根据我想要一个或不是FORM标签,只需更改我的CONTENT-PAGES顶部的母版页链接,就像这样

<%@ Page Title="" Language="VB" MasterPageFile="~/SiteName.master" %>
<%@ MasterType VirtualPath="~/SiteName.master" %>
<!-- This masterpage has the default FORM tag -->

<%@ Page Title="" Language="VB" MasterPageFile="~/SiteNameNF.master" %>
<%@ MasterType VirtualPath="~/SiteNameNF.master" %>
<!-- This masterpage does NOT have the default FORM tag -->

然后在内容页面中,无论我想放置表单的哪个位置,我都可以添加<form>标记