0

jQueryを介してGETパラメーターに基づいてバックグラウンドアクションを実行し、1または0を出力するWebフォームを作成したいのですが、問題-ASP.NETは、そのようなコードが存在しない場合でも、デフォルトで大量のHTMLを出力します。マークアップウィンドウ

<%@ Page Language="C#"%>
<%
  try
  {
    int cID = int.Parse(Request.QueryString["cid"].ToString());
    //do some job and print 1 or 0
  }
  catch { }
%>

しかし、出力ウィンドウにHTMLコードが表示されます

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type></HEAD>
<BODY></BODY></HTML>
4

1 に答える 1

1

aspx フォームの代わりに ashx ([新しいアイテムの追加] > [汎用ハンドラー]) ハンドラーを使用することをお勧めします。

プロセス リクエスト内で、レスポンスの MIME タイプを text/plain に変更し、クエリ文字列の値をレスポンスに書き込むだけです

MyHandler.ashx.cs:

/// <summary>
/// Summary description for MyHandler
/// </summary>
public class MyHandler : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write(context.Request.QueryString["cid"]);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

jQuery を使用してクライアント側で値を取得する:

        $.ajax({
            type: "GET",
            url: "MyHandler.ashx?cid=10",
            contentType: "text/plain",
            dataType: "text",
            success: function (data) {
                alert(data);
            }
        })
于 2012-10-01T14:44:46.460 に答える