我一直在使用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