向Handler提交表单无效

时间:2009-10-13 01:07:08

标签: c# asp.net forms httphandler

我正在尝试将表单提交到处理程序页面,但现在没有任何工作,它甚至没有点击处理程序......

这是我的代码:

<form action="Unsubscription.ashx?actionmethod=subscribe" method="get" >
<div class="h1">
<input type="text" class="input" value="enter your e-mail" name="ekey"  />
<input type="submit" value="Submit" />
</div>
</form>

处理程序代码:

public void ProcessRequest(HttpContext context)
{
    try
    {
        string email = context.Request.Params["ekey"];
        switch (context.Request.Params["actionmethod"])
        {

            case "subscribe":
                NewsLetter.Subscribe(email);
                break;
            case "unsubscribe":
                NewsLetter.Unsubscribe(email);
                context.Response.ContentType = "text/html";
                context.Response.Write("your subscription has been successfully canceled. thanks.<br/><a href='http://www.kayatax.com'><b>home page</b></a>");
                break;
        }


    }
    catch         {
        context.Response.ContentType = "text/html";
        context.Response.Write("This e-mail doesn't exist in our database. Thanks.<br/><a href='http://www.kayatax.com'><b>Home Page</b></a>");
    }
}

3 个答案:

答案 0 :(得分:0)

您的</<form>标记一开始就格格不入。设为</form>,我相信你知道。

答案 1 :(得分:0)

如果您遇到浏览器端渲染问题,并且没有遇到服务器端处理程序,我会首先调查浏览器端。查看通过网络传输的内容:在Firebug中,启用Net面板,重新加载页面,提交表单,然后在Net面板中查看Request。将鼠标悬停在第一个节点(对表单处理程序页面的请求)上,并确保请求URL符合您的预期。然后展开节点并查看Request标头。

我想知道的第一件事,就是没有看到更多的网络应用程序,目标Unsubscription.ashx是否与包含表单的页面位于同一目录中,或者是否存在某种路由方法这让它看起来那样。您正在使用与文档相关的URL;你确定目标是你认为的目标吗?

顺便说一句,您应该 使用GET方法进行更改服务器上数据的表单提交;使用POST。这是一项更多的工作,但更安全。 GET requests should be idempotent。如果您使用GET触发更改服务器上的内容的操作,您可能会发现they're changed when you don't expect them to be。 D'哦!

答案 2 :(得分:0)

您的表单使用的是“get”,它本质上是HTTPGET。检查提交的URL和查询字符串。它应该是

Unsubscription.ashx?actionmethod=subscribe&ekey=enter%20your%20email

是否正确显示?

您的输入提交按钮没有名称,但这不会影响您的需求。