我问这个问题的原因是因为我没有看到太多的例子。基本上,我的controller
有一个method that returns void
。该方法由post
调用,该方法通过jQuery
完成。如果帖子成功,我只需用一些html更新页面的一小部分。我不需要从方法中取回任何东西,所以我返回虚空是好的和可以接受的吗?如果没有,在进行ajax调用时,你通常会从控制器方法返回什么?
这是我的Controller方法:
[HttpPost]
public void AddToCart(ShoppingCartItem shoppingCartItem)
{
_shoppingCartService.AddItem(shoppingCartUserId, shoppingCartItem);
}
这是我的javascript:
$(function () {
$("#addToCart").submit(function (e) {
e.preventDefault();
var shoppingCartItem = JSON.stringify(
{
'Name': $('#Name').val(),
'ProductId': $('#ProductId').val(),
'ShortDescription': $('#ShortDescription').val(),
'Sku': $('#Sku').val()
});
AddToCart(shoppingCartItem);
});
function AddToCart(shoppingCartItem) {
$.ajax({
url: '/ShoppingCart/AddToCart',
async: false,
type: "POST",
data: shoppingCartItem,
dataType: "html",
contentType: "application/json",
error: function (data) {
console.log(data);
},
success: function () {
var count = parseInt($('div.item-counter').html()) + 1;
$('div.item-counter').html(count);
}
});
}
}());
我注意到如果我的动作方法失败,将调用错误函数,如果成功,则会调用函数。
答案 0 :(得分:2)
没有返回任何东西,你不会知道它是成功的。
return Json(new { success= true });
然后您可以在成功函数中查看data.success
。
答案 1 :(得分:0)
好吧,你不能归还无效。操作的响应必须是ActionResult
。您可以返回Content("")
之类的内容,这些内容完全没有,但仍然是ActionResult
的类型。
但是,通常,您应该返回某些内容,即使它是一个简单的JSON结构,例如:{ "success": true }
。无论如何,您希望确保返回正确的HTTP状态,例如200,以获得成功的请求。
答案 2 :(得分:0)
这是完全可以接受的,但是你的客户不会知道帖子的结果(这将返回204 No Content)。
至少,你想让他们意识到。如果您不需要传回数据,我建议您返回类型IHttpActionResult,然后返回Ok()(返回200 OK)。
请在此处阅读有关WebApi2返回类型的更多信息:http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/action-results