与大多数人一样,我看过很多从表单(html)获取数据的例子,并且能够有效地处理发布的数据,如ASHX(Generic Handler)页面中所说的......并且从那里说通过存储过程更新数据库..也许我试图自动化太多的东西? !!
现在不是让代码行获取每个表单值,然后分配给存储过程,是否有一种简化的方法呢?
我正在使用JQuery ..我看到了序列化函数..但只需要知道端到端解决方案是否可以这样做,或者如果我确实必须手动检索值,并将它们分配给对象/存储过程....
非常感谢任何帮助!
答案 0 :(得分:4)
首先编写通用处理程序:
public class TestHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
using (var connection = new SqlConnection(ConnectionString))
using (var command = connection.CreateCommand())
{
connection.Open();
command.CommandText = "NameOfYourSP";
command.CommandType = CommandType.StoredProcedure;
foreach (string name in context.Request.Form.Keys)
{
command.Parameters.AddWithValue("@" + name, context.Request.Form[name]);
}
command.ExecuteNonQuery();
}
context.Response.ContentType = "text/plain";
context.Response.Write("success");
}
public bool IsReusable
{
get { return false; }
}
}
您可以这样称呼:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<script type="text/javascript" src="jquery-1.4.1.js"></script>
<script type="text/javascript">
$(function() {
$('a').click(function() {
$.ajax({
url: '/testhandler.ashx',
data: $('form').serialize(),
type: 'POST',
success: function(data) {
alert(data);
}
});
});
});
</script>
</head>
<body>
<form action="/test.ashx" method="post">
<input type="text" name="param1" value="value1" /><br/>
<input type="text" name="param2" value="value2" /><br/>
<input type="text" name="param3" value="value3" /><br/>
</form>
<a href="#">Submit data</a>
</body>
</html>