2012-05-02 22 views
6

Câu hỏi dễ dàng có lẽ.Cách trả lời không có html trong asp.net

OK, tôi có một bài đăng trên trang của mình và cần trả lời bằng một chuỗi.

trong php, bạn chỉ có thể làm một cái gì đó như thế này:

<?php 
die ("test"); 

sau đó bạn có thể đặt trang này trên một máy chủ web và truy cập nó như thế này:

localhost/test.php 

như vậy, tôi cần phải làm chính xác điều tương tự trong C#.

Khi tôi cố gắng để đáp ứng với:

protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.Write("test"); 
     Response.End(); 
    } 

tôi nhận được: "<html><head><style type="text/css"></style></head><body>test</body></html>" như một phản ứng.

Tôi làm cách nào để làm cho asp.net chỉ trả về phản hồi chính xác mà không cần html?

Tôi biết rằng tôi có thể thiếu một số kiến ​​thức cơ bản, nhưng không thể tìm thấy bất kỳ điều gì trực tuyến.

+1

Tôi không thể mô phỏng sự cố của bạn; Với VS2010 bắt đầu một cái mới ra khỏi hộp "ASP.NET Web Application" và sử dụng mã của bạn sản xuất như mong đợi: chỉ "thử nghiệm". – banging

Trả lời

5

Hãy chắc chắn rằng trong tập tin *.aspx của bạn, ở phía trên bạn có AutoEventWireup="true", nếu nó sai xử lý sự kiện Page_Load bạn sẽ (hoặc không có?) không được gọi.

Ngoài ra, hãy đảm bảo bạn đã biên soạn trang của mình.

Một đề xuất khác là sử dụng Generic Handler (ví dụ: *.ashx), chúng không sử dụng vòng đời webforms điển hình và có thể phù hợp hơn với những gì bạn đang làm.

+0

Hãy để tôi thử ashx và xem điều gì sẽ xảy ra. – user194076

+0

Cảm ơn bạn rất nhiều. ashx hoạt động! – user194076

+0

hãy nhớ rằng bạn sẽ sử dụng 'context.Response' (hoặc bất kỳ tên tham số nào) thay vì' Response' đơn giản. – Matthew

10

Bạn có thể xóa bộ đệm phản hồi trước đó và viết đầu ra mới của mình.

Response.Clear(); // clear response buffer 
Response.Write("test"); // write your new text 
Response.End(); // end the response so it is sent to the client 
+0

Tôi đã không downvote, nhưng nó không giúp đỡ. Có lẽ tôi cần thay đổi cách tôi gọi kịch bản của mình? Hiện tại tôi đang tạo một trang web với cả tệp aspx và cs. – user194076

+0

Thay đổi sự kiện bạn đang gắn vào - hãy thử 'Page_PreInit' để thay thế. – lukiffer

5

Tôi nghĩ rằng bạn đang tìm kiếm:

protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.ContentType = "text/plain"; 
     Response.Write("test"); 
     Response.End(); 

    } 
+0

Không giúp được gì. vẫn giống nhau. – user194076

+3

Làm việc cho tôi. :-D – tzerb

+0

@ user194076 đây phải là câu trả lời, tôi cũng đã thêm Response.Clear() trước ContentType chỉ để đảm bảo: P – Alpha2k

2

Đối với tôi, nó chỉ tạo văn bản thực tế trong response.write(); tuyên bố. Tôi đang tải lên mã hoàn chỉnh để rõ ràng.

Visual Studio: 2010

Mã Đằng sau:

public partial class Default2 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.Write("I CAN ONLY SEE THIS NO OTHER HTML TAG IS INCLUDED"); 
     Response.End(); 
    } 
} 

HTML MÃ

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

    </div> 
    </form> 
</body> 
</html> 

OUTPUT & HTML Source:

Tôi CHỈ CÓ THỂ XEM NÀY KHÔNG CÓ THẺ HTML KHÁC ĐƯỢC BAO GỒM

Tôi nhận được kết quả mong muốn. Tôi đã thử mã này với Master-Page tôi cũng nhận được kết quả tương tự.

Hãy chắc chắn rằng bạn AutoEventWireup = "true" nếu tôi tắt chức năng này sai thay đổi NGUỒN rồi HTML để này

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head><title> 

</title></head> 
<body> 
    <form method="post" action="Default2.aspx" id="form1"> 
<div class="aspNetHidden"> 
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZGivF0fgbeE6VebNR51MYSu3yJdsZ9DwEtIPDBVRf4Vy" /> 
</div> 

    <div> 

    </div> 
    </form> 
</body> 
</html> 
Các vấn đề liên quan