2009-05-29 38 views
5

Tôi có một ứng dụng web có trang tải nội dung từ cơ sở dữ liệu. Tôi muốn có thể đặt một biểu mẫu trong nội dung động, nhưng .net không cho phép biểu mẫu bên trong thực hiện hành động của nó. Có cách nào để cho phép điều này hoặc một số cách khác tôi có thể nhận được một hình thức trên một trang nội dung động?Thẻ biểu mẫu trên trang ASP.net

Cảm ơn.

--EDIT--

Tôi nghĩ tôi cần làm rõ điều gì đó. Đây là trang aspx tải nội dung từ cơ sở dữ liệu. Theo như tôi biết, văn bản tôi kéo từ db và dính vào Nhãn không bao giờ được biên soạn hoặc xử lý bởi .net wp, do đó tôi không thể sử dụng mã phía sau để khắc phục vấn đề này.

Trả lời

4

Chỉ có thể có một mẫu trên trang (hình thức asp) ; bạn phải sử dụng hình thức đó bằng cách nào đó.

Để làm rõ, chỉ có thể có một biểu mẫu được xử lý.

+13

ngu ngốc, ngu ngốc, biểu mẫu web – annakata

+0

Bạn có thể thêm số lượng biểu mẫu bạn muốn trên một trang, nhưng chỉ có một biểu mẫu có thẻ 'runat = "server" ' –

1

Không có biểu mẫu web, không. Bạn phải làm việc bên trong biểu mẫu một trang đầy đủ bằng cách sử dụng trình xử lý sự kiện được kết nối với một số Button đến LinkButton. May mắn thay, nó khá dễ dàng để làm:

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 
} 
... 
0

bạn phải xử lý việc đăng lại bằng cách thêm trình xử lý sự kiện nhấp vào phía máy chủ vào nút bạn muốn làm nút gửi biểu mẫu phụ (đây là cách biểu mẫu web xử lý nhiều loại trình gửi trên cùng một trang) hoặc thực hiện việc làm thông minh với AJAX nếu bạn không muốn đăng đầy đủ trở lại

0

Tôi đã gặp vấn đề này trước đây. Một cách giải quyết khác mà tôi đã thực hiện là đặt mã của mình mà tôi muốn hành động của mình được thực hiện khi bên trong một bảng điều khiển: Bảng điều khiển. Với bảng điều khiển, bạn có thể đặt thuộc tính của "DefaultButton" thành nút bên trong bảng điều khiển và nhấp vào nút (hoặc nhấn "enter") sẽ kích hoạt sự kiện nhấp của nút đó. Tôi đã tìm thấy điều này khá tiện dụng khi muốn gửi một "hình thức" bằng cách nhấn Enter khi tôi có một trang chủ có chứa chỉ cho phép asp: Form.

Hy vọng điều này sẽ hữu ích.

5

Đây là vấn đề phổ biến, khi bạn muốn có biểu mẫu không đăng lại cho trang web của bên thứ ba (ví dụ như nút PayPal).

Sự cố xảy ra vì HTML không cho phép bạn có biểu mẫu trong biểu mẫu và hầu hết các trang ASP.NET có một "cao lên" trong HTML (hoặc trong trang chính).

Giải pháp yêu thích của tôi là ẩn thẻ biểu mẫu "cao cấp", trong khi vẫn hiển thị tất cả nội dung. Sau đó, bạn có thể cảm thấy tự do để đổ bất kỳ thẻ nào bạn muốn trong cơ thể. Nếu bạn làm điều này một cách năng động, bạn có thể chọn trên cơ sở từng trang mà các trang có các biểu mẫu tùy chỉnh.

Tôi đã tạo một lớp có tên là GhostForm.cs để xử lý việc này. Bạn có thể đọc tất cả về nó ở đây:

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

0

Mọi công việc xung quanh sẽ bị hack và rất xấu. Theo thiết kế asp.net sử dụng một thẻ biểu mẫu để đăng và nhận dữ liệu. Đây là lý do tại sao họ gọi nó là một ứng dụng biểu mẫu web. Html không cho phép các biểu mẫu lồng nhau. Những gì bạn muốn làm là sử dụng một WebRequest trong mã của bạn phía sau.

Nếu bạn đang cố gắng một cái gì đó giống như một nút paypal bạn chỉ có thể sử dụng một cái gì đó như thế này.

Markup:

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

Mã Đằng sau:

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"); 
0

Khi tôi lần đầu tiên đi qua vấn đề này, tôi thấy giải pháp đơn giản nhất đối với tôi là để COPY đơn giản và dán trang Thạc sĩ và cung cấp cho nó một tên hơi khác, một cái gì đó như:

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

Và sau đó tùy thuộc vào thời tiết tôi muốn ed một thẻ FORM hay hay không, chỉ cần thay đổi liên kết masterpage ở phía trên cùng của tôi CONTENT-TRANG, như thế này

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

hoặc

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

và sau đó trong trang nội dung, bất cứ nơi nào tôi muốn đặt biểu mẫu của tôi Tôi có thể bao gồm thẻ <form>

Các vấn đề liên quan