我一直在使用Knockout和Entity Framework来关注我的MVC项目的在线教程。我也在使用存储库模式。替代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调用异常的一些想法:http:// stackoverflow。com/questions/4707755/asp-net-mvc-ajax-error-handling –
@chickenricekid它已经有一段时间了,因为这引起了你的注意。你能否评论答案是否可以改进,或接受其中的一个?谢谢。 – firstdoit
@ gadr90表示道歉 - 我已经参加过多次商务旅行,因此我没有机会全面实施您的答案。但是,它看起来像是我正在寻找的答案,并且不管它是否仍然是有价值的信息。我会继续并接受你的回答。再次感谢! – chickenricekid