【发布时间】:2018-07-27 03:31:18
【问题描述】:
我们按照本教程 https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-2.1 创建一个使用 ASP.NET Core 和 Visual Studio for Windows 的 Web API 并创建了一个 ToDoApi 项目。我可以通过该项目和 PostMan 发布并获取 URL:http://localhost:2399/api/todo
然后,我使用 ASP.NET Web 窗体站点创建了新项目。 我用这个 html 添加了新的 Web 表单:
<body>
<form id="form1" runat="server" method="post" action="http://localhost:2399/api/Create">
<div>
<asp:Label Text="Name:" runat="server" />
<asp:TextBox runat="server" name="name"/>
<br />
<asp:Button Text="Submit" runat="server" />
</div>
</form>
</body>
我尝试发布到以前的项目,但没有成功。我可以打第一个断点,但不能打第二个。我们希望 .NET Core 作为后端 API,而 HTML 表单作为前端。你有什么推荐的?
public class TodoController : Controller
{
private readonly TodoContext _context;
public TodoController(TodoContext context)
{
_context = context;
if (_context.TodoItems.Count() == 0)
{
_context.TodoItems.Add(new TodoItem { Name = "Item1" });
_context.SaveChanges();
}
}
[Route("~/api/Create")]
[HttpPost]
public IActionResult Create([FromBody] TodoItem item)
{
if (item == null)
{
return BadRequest();
}
_context.TodoItems.Add(item);
_context.SaveChanges();
return CreatedAtRoute("GetTodo", new { id = item.Id }, item);
}
简单的表单调用api(这不起作用):
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MY API</title>
</head>
<body>
<h1>ADD NEW LEAD</h1>
<input type="text" id="add-name" placeholder="Full Name">
<input type="text" id="add-company" placeholder="Company">
<input type="text" id="add-phone" placeholder="Phone">
<input type="text" id="add-email" placeholder="Email">
<input type="text" id="add-address" placeholder="Address">
<input type="text" id="add-city" placeholder="City">
<input type="text" id="add-state" placeholder="State">
<input type="text" id="add-zip" placeholder="Zip Code">
<input type="text" id="add-description" placeholder="Description">
<button type="submit" onclick="javascript:send()">Submit</button>
<div id='div'>
</div>
<script type="text/javascript" language="javascript">
function send() {
//var ItemJSON = {
// "FullName": $('#add-name').val(),
// "Company": $('#add-company').val(),
// "Phone": $('#add-phone').val(),
// "Email": $('#add-email').val(),
// "Address": $('#add-address').val(),
// "City": $('#add-city').val(),
// "State": $('#add-state').val(),
// "Zip": $('#add-zip').val(),
// "Description": $('#add-description').val()
//};
var ItemJSON = '{ "FullName": "NA", "Phone": "31439289452", "Ext": "5000", "Email": "m.alkurwi@Yahoo.com","Company": "PlazSoft", "Address": "357 Hinder dr", "Description": "tsetteststeste", "City": "STL", "State": "MO", "Zipcode": "63125" }';
alert('1')
URL = "http://localhost:59930/api/values"; //Your URL
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
alert(this.responseText);
}
};
alert('2')
xmlhttp.open("POST", URL, true);//tried both false and true
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(JSON.stringify(ItemJSON));
document.getElementById("div").innerHTML = xmlhttp.statusText + ":" + xmlhttp.status + "<BR><textarea rows='100' cols='100'>" + xmlhttp.responseText + "</textarea>";
}
</script>
</body>
</html>
post man 可以 POST 到它,但是 web 表单不能
【问题讨论】:
-
不要将网络表单混入其中 - 它与网络表单后端的互操作密切相关。
-
我们希望 .NET Core 作为后端 API,而 HTML 表单作为前端。你有什么推荐的?
-
只使用直接的 html - 没有
runat废话。
标签: c#