Вы можете использовать страницы Razor без MVC; это называется ASP.Net WebPages.
Просто добавьте файлы .CSHTML в обычный проект ASP.Net 4.0.
Я объяснил, как это работает в моем блог.
Я полагаю, что обработчик ответов Ajax использует Код состояния HTTP, чтобы проверить, была ли ошибка.
Поэтому, если Вы просто выдаете исключение Java на своем серверном коде, но тогда ответ HTTP не имеет 500 кодов статуса, jQuery (или в этом случае вероятно, объект XMLHttpRequest) просто предположит, что все было прекрасно.
я говорю это, потому что у меня была подобная проблема в ASP.NET, где я бросал что-то как ArgumentException ("Не знают, что сделать..."), но обработчик ошибок не стрелял.
я тогда установил Response.StatusCode
или на 500 или на 200, была ли у меня ошибка или нет.
Удостоверьтесь, что Вы - установка Response.StatusCode
к чему-то другому, чем 200. Запишите сообщение своего исключения с помощью Response.Write
, затем используйте...
xhr.responseText
.. в Вашем JavaScript.
Выбросить новое исключение на сервере, используя:
REATIC.STATUSCODOCODE = 500
Ответ. Statusdescription = ex.message ()
Я считаю, что статус зависит от Ajax Call ...
Пример:
Try
Dim file As String = Request.QueryString("file")
If String.IsNullOrEmpty(file) Then Throw New Exception("File does not exist")
Dim sTmpFolder As String = "Temp\" & Session.SessionID.ToString()
sTmpFolder = IO.Path.Combine(Request.PhysicalApplicationPath(), sTmpFolder)
file = IO.Path.Combine(sTmpFolder, file)
If IO.File.Exists(file) Then
IO.File.Delete(file)
End If
Catch ex As Exception
Response.StatusCode = 500
Response.StatusDescription = ex.Message()
End Try
Controller:
public class ClientErrorHandler : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
var response = filterContext.RequestContext.HttpContext.Response;
response.Write(filterContext.Exception.Message);
response.ContentType = MediaTypeNames.Text.Plain;
filterContext.ExceptionHandled = true;
}
}
[ClientErrorHandler]
public class SomeController : Controller
{
[HttpPost]
public ActionResult SomeAction()
{
throw new Exception("Error message");
}
}
View script:
$.ajax({
type: "post", url: "/SomeController/SomeAction",
success: function (data, text) {
//...
},
error: function (request, status, error) {
alert(request.responseText);
}
});
Вероятно, это вызвано тем, что имена полей JSON не имеют кавычек.
Измените структуру JSON с:
{welcome:"Welcome"}
на:
{"welcome":"Welcome"}