我正在尝试将表单提交到处理程序页面,但现在没有任何工作,它甚至没有点击处理程序......
这是我的代码:
<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>");
}
}
答案 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
是否正确显示?
您的输入提交按钮没有名称,但这不会影响您的需求。