asp.net中form表单无法提交给一般处理程序
一直报找不到"PersonEdit.ashx",运行程序时报"action参数错误",说明action的值根本没有传过去,但是感觉代码又没有什么问题,不知该怎么办,求大侠...
一直报找不到"PersonEdit.ashx",运行程序时报"action参数错误",说明action的值根本没有传过去,但是感觉代码又没有什么问题,不知该怎么办,求大侠指点
html页面
<head>
<title>人员编辑</title>
</head>
<body>
<form action="PersonEdit.ashx" method="post">
<table>
<tr><td>姓名:</td><td><input type="text" name="Name" value="$Data.Name"/></td></tr>
<tr><td>年龄:</td><td><input type="text" name="Age" value="$Data.Age"/></td></tr>
<tr><td>邮箱:</td><td><input type="text" name="Email" value="$Data.Email"/></td></tr>
<tr><td></td><td><input type="submit" value="保存"/></td></tr>
</table>
</form>
<a href = "PersonEdit.ashx?Action=AddNew">新增</a>
</body>
</html>
ashx文件
public class PersonEdit : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
//PersonEdit.ashx?action=AddNew
//PersonEdit.ashx?action=Edit&Id=3
string action = context.Request["action"];
if (action == "AddNew")
{
//CommonHelper.RenderHtml("PersonEdit.htm", new { Name = "", Age = "20", Email = "@168.com" });
var data = new { Name = "", Age = "20", Email = "@168.com" };
string html = CommonHelper.RenderHtml("PersonEdit.htm", data);
context.Response.Write(html);
}
else if (action == "Edit")
{
}
else
{
context.Response.Write("action参数错误");
}
}
public bool IsReusable
{
get
{
return false;
}
}
} 展开
html页面
<head>
<title>人员编辑</title>
</head>
<body>
<form action="PersonEdit.ashx" method="post">
<table>
<tr><td>姓名:</td><td><input type="text" name="Name" value="$Data.Name"/></td></tr>
<tr><td>年龄:</td><td><input type="text" name="Age" value="$Data.Age"/></td></tr>
<tr><td>邮箱:</td><td><input type="text" name="Email" value="$Data.Email"/></td></tr>
<tr><td></td><td><input type="submit" value="保存"/></td></tr>
</table>
</form>
<a href = "PersonEdit.ashx?Action=AddNew">新增</a>
</body>
</html>
ashx文件
public class PersonEdit : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
//PersonEdit.ashx?action=AddNew
//PersonEdit.ashx?action=Edit&Id=3
string action = context.Request["action"];
if (action == "AddNew")
{
//CommonHelper.RenderHtml("PersonEdit.htm", new { Name = "", Age = "20", Email = "@168.com" });
var data = new { Name = "", Age = "20", Email = "@168.com" };
string html = CommonHelper.RenderHtml("PersonEdit.htm", data);
context.Response.Write(html);
}
else if (action == "Edit")
{
}
else
{
context.Response.Write("action参数错误");
}
}
public bool IsReusable
{
get
{
return false;
}
}
} 展开
1个回答
展开全部
你的form根本就没有传入Action参数,当然不会执行里面的内容了。
<form action="PersonEdit.ashx?action=AddNew" method="post"> 改成这样。
...
</form>
或者
<form action="PersonEdit.ashx" method="post">
<input type="hidden" name="action" value="AddNew"/>
...
</form>
<form action="PersonEdit.ashx?action=AddNew" method="post"> 改成这样。
...
</form>
或者
<form action="PersonEdit.ashx" method="post">
<input type="hidden" name="action" value="AddNew"/>
...
</form>
更多追问追答
追问
首先感谢楼上这位仁兄,关于,我本意是想把PersonEdit.htm这个HTML页面提交给PersonEdit.ashx来处理,但是编译器一直提示找不到该文件,将表单提交给一般处理程序应该不用在后面加上“?action=AddNew”吧
追答
你首先得传入action
才会进入if代码段中去。这样才会处理PersonEdit.htm
关于你说的找不到文件,检查一下你的文件路径是不是正确的。
常见的错误就是你没有用context.Server.Mappath取绝对路径。或者你掉了templates文件夹。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询