我有一个Web应用程序,其中有一个页面可以加载数据库中的内容。我希望能够在动态内容中放置一个表单,但.net不会让内部表单执行它的动作。有没有办法允许这种或其他方式我可以在动态内容页面上获取表单?
感谢。
- 编辑 -
我想我需要澄清一些事情。这是一个从数据库加载内容的aspx页面。据我所知,我从数据库中提取并粘贴在Label中的文本永远不会被.net wp编译或处理,因此我无法使用后面的代码来解决这个问题。
答案 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)
不是网络表格,没有。您必须使用连接到Button
到LinkButton
的事件处理程序在单页整页表单中工作。幸运的是,这很容易做到:
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中的多个表单或“模拟”子表单,可能只回答您的所有问题。
答案 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}
¤cy_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>
标记