Comments 15
А чё, мне нравится, в духе MSFT и соответствует дизайну фрэймворка.
хорошо
подумалось, может имеет смысл вызывать исключение вместо редиректа на страницу с описанием ошибки?
типа
new HttpException(404, «Page not found»)
подумалось, может имеет смысл вызывать исключение вместо редиректа на страницу с описанием ошибки?
типа
new HttpException(404, «Page not found»)
Ценный пост. Спасибо.
Кстати, вы не подскажете как бороться с тем, что при $.post объекта созданного в javascript не вызывается action на сервере? Я уже замучился с этим. Видимо с сериализацией объекта на jquery или методом передачи что то не то.
Кстати, вы не подскажете как бороться с тем, что при $.post объекта созданного в javascript не вызывается action на сервере? Я уже замучился с этим. Видимо с сериализацией объекта на jquery или методом передачи что то не то.
Случайно, не 404 ошибка?
Нет, просто не доходит до серверного метода. Вот тут тоже парень мучался.
stackoverflow.com/questions/848463/controller-parameter-null-when-using-jquery-post-and-asp-net-mvc
stackoverflow.com/questions/848463/controller-parameter-null-when-using-jquery-post-and-asp-net-mvc
Вероятно, я понял, в чем проблема, у меня подобное было. К сожалению, я не смог (не захотел?) детально разобраться, где тут грабли, но пока обхожу эту штуку вот так:
К примеру, у меня есть экшен, принимающий параметр name, и в правилах роутинга прописано что-то типа "{controller}/{action}/{name}". Сам же экшен выглядит как
Когда ты посылаешь запрос типа
то как раз происходит подобная вещь. Но стоит только изменить запрос на
как все чудесным образом срабатывает :) И проследи, чтобы в случае с JSON в $.ajax был dataType: «json», а экшен возвращал JsonResult.
Надеюсь, это как раз твой случай, и я помог.
ЗЫ. Кстати, у этого парня другая проблема была, он о решении сам же и написал.
К примеру, у меня есть экшен, принимающий параметр name, и в правилах роутинга прописано что-то типа "{controller}/{action}/{name}". Сам же экшен выглядит как
public ActionResult DoSomething(string name) {...}
Когда ты посылаешь запрос типа
$.ajax(
{
url: "/Home/DoSomething",
data : { name : "myname" },
...
)
* This source code was highlighted with Source Code Highlighter.
то как раз происходит подобная вещь. Но стоит только изменить запрос на
$.ajax(
{
url: "/Home/DoSomething/" + name,
...
)
как все чудесным образом срабатывает :) И проследи, чтобы в случае с JSON в $.ajax был dataType: «json», а экшен возвращал JsonResult.
Надеюсь, это как раз твой случай, и я помог.
ЗЫ. Кстати, у этого парня другая проблема была, он о решении сам же и написал.
А если объект сложнее чем { name: «myname» }?
Если там три string и два double и ещё один объект внутри?
Если там три string и два double и ещё один объект внутри?
А я при отправке данных формы через jQuery использую $.post и обхожусь стандартным декоратором Action — [AcceptVerbs(HttpVerbs.Post)]. И никаких лишних телодвижений.
Ну, я и написал, что это не такая уж жуткая проблема. Просто я чисто из собственных эгоистических побуждений предпочитаю, чтобы адресная строка браузера на моем сайте использовалась только для доступа к страницам, которые я предпочту показать. Использование же $.post просто ограничивает число способов, которыми можно при этом воспользоваться :)
А я не прописывал AcceptVerbs, но у меня тоже все работает.
У тебя нет проблем с безопасностью когда используется много ajax get?
haacked.com/archive/2009/06/25/json-hijacking.aspx
haacked.com/archive/2009/06/25/json-hijacking.aspx
Sign up to leave a comment.
ASP.NET MVC — «прячем» Action