【发布时间】:2015-01-14 20:03:08
【问题描述】:
我一直在关注使用 Knockout 和实体框架的 MVC 项目的在线教程。我也在使用存储库模式。
根据我的发现,教程在执行 HTTP POST 请求时返回字符串,如下所示。我担心的是控制器正在返回字符串 - 它看起来非常初级,我似乎无法找到一个可靠的示例/教程来说明如何执行这些 POST 请求(而不返回视图),以及捕捉数据库异常和 POST 异常。
Javascript:
self.saveNRI = function () {
var token = $('[name=__RequestVerificationToken]').val();
var headers = {};
headers["__RequestVerificationToken"] = token;
$.ajax({
type: "POST",
url: '/nris/Create',
headers: headers,
dataType: 'json',
data: ko.toJSON(self.nri),
contentType: 'application/json',
success: function (result) { },
error: function (err) {
if (err.responseText == "Success") {
window.location.href = '/nris/Index/';
}
if (err.responseText == "Failed") {
alert("save failed");
}
}
});
}
控制器:
[HttpPost]
public string Create(DTO incomingModel)
{
if (ModelState.IsValid){
try
{
_nriRepository.Insert(incomingModel);
}
catch (Exception ex)
{
return "Failed";
}
}
return "Success";
}
存储库:
public async void Insert(DTO n)
{
//Insert code removed for brevity
await _context.SaveChangesAsync();
}
【问题讨论】:
-
查看以下帖子,了解如何处理 AJAX 调用中的异常:stackoverflow.com/questions/4707755/…
-
@chickenricekid 很久没有收到你的关注了。您能否评论答案是否可以改进,或接受其中之一?谢谢。
-
@gadr90 道歉 - 我已经安排了几次商务旅行,所以我没有机会完全实施您的回答。然而,这似乎是我正在寻找的答案,而且不管它仍然是有价值的信息。我会继续接受你的回答。再次感谢!
-
谢谢 :) 请在您尝试后更新我们
标签: c# ajax asp.net-mvc-4 knockout.js