当我点击excel中的“插入”按钮时,我想将数据插入SQL Server数据库。
数据在单元格A2和B2中,这里是excel中“插入”按钮背后的代码:
Dim HttpReq As New WinHttp.WinHttpRequest
HttpReq.Open "POST", "http://localhost:11121/Student/Insert/", False
HttpReq.Send "jsmith112"
以下是我在VS中的Controller操作的代码:
[HttpPost]
public ActionResult Insert(string id)
{
try
{
student.AddToStudents(id);
student.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
这似乎没有用,有人能指导我完成这个吗?
提前致谢
答案 0 :(得分:1)
只需将POST更改为
即可"http://localhost:11121/Student/Insert/" + id
然后映射路线
routes.MapRoute(
"InsertStudent",
"Student/Insert/{id}",
new { controller = "Student", action = "Insert", id = "" }
);
然后在您的控制器中,您可以检查id是否为空,如果没有,则创建一个新用户
另外,有时我会做这样的事情
routes.MapRoute(
"Resource",
"{resource}/{operation}/{id}",
new { controller = "Resource", action = "Index", resource = "", operation = "" id = "" }
);
然后你可以解析出事情是什么......
作为旁注,如果您为服务制作更多的终点,您可以考虑使用GET,POST,PUT,DELETE而不是在URI中实际使用“插入”。 REST。
答案 1 :(得分:0)
我不认为您的控制器操作会在这种情况下看到数据。它无法知道您发送的'jsmith112'应该对应于字符串id参数。在控制器操作内部,使用Request.InputStream对象来获取发布的数据并将其发送到数据库中。
更好的方法是将其作为url编码的表单数据发送(所以post body将是'id = jsmith112'),或者将请求更改为GET(或PUT,如果你想要正确地RESTful)并点击这个URL:
http://localhost:11121/Student/Insert/jsmith112
在这种情况下,它应该由字符串id参数拾取。
另外,在控制器操作中放置一个断点以确保实际上是在点击它,然后使用调试器来验证您的Web服务是否具有所需的数据。