【发布时间】:2019-10-02 20:47:01
【问题描述】:
我正在尝试调用我新创建的 Web API 来发布消息,但它不起作用。我有一个从控制器操作方法接收数据的视图。我在创建 web api 并从 Ajax 方法调用它方面非常新,所以我正在寻找好的详细说明。我想传递用户在文本区域中输入的消息以及我作为数据属性添加到按钮上的消息 ID。
我创建了一个表单并添加了一个带有按钮的文本区域供用户发送消息。在 API 中,我想将它添加到数据库中。我可以做数据库部分,但我希望在完成 ajax 调用后更新表单。
查看代码
<div class="bg-dark rounded padding-x4">
@*This form will be used to send messages. Use Jquery to run Api to send messages*@
<form>
<textarea placeholder="Send a new message..." id="messageToBeSent" rows="6" cols="100"></textarea>
<button data-message-id="@Model.Messages.MessageID" class="btn btn-primary" id="sendMessage">Send Message</button>
</form>
</div>
我的 Web Api 结构
[HttpPost]
public IHttpActionResult SendMessages(int MessageID,string MessageReply)
{
//Add a message to MessageReply table
return Ok();
}
jQuery 代码
<script>
$(document).ready(function () {
$("#sendMessage").on("click", function (e) {
e.preventDefault();
var MessageReplyParam = $('#messageToBeSent').val();
var button = $(this);
$.ajax({
//url: "/api/messages/SendMessages?MessageID=" + button.attr("data-message-id"),
url: "/api/messages/SendMessages",
method: "POST",
data:{
MessageID:button.data("message-id"),
MessageReply:MessageReplyParam
},
success: function (data) {
}
});
});
});
</script>
目前,它没有访问我的 API 类,并且在谷歌浏览器的网络选项卡上显示 404 Not found。我做错了什么?
【问题讨论】:
-
我经常使用辅助方法并将其粘贴在属性中,而不是硬编码:
<span data-url="@Url.Action("SendMessages", "messages", new {/*Route values here*/)">更多信息:docs.microsoft.com/en-us/dotnet/api/… 示例:将其粘贴在<form>元素中
标签: c# jquery ajax asp.net-web-api model-view-controller