Pull to refresh

Comments 15

А чё, мне нравится, в духе MSFT и соответствует дизайну фрэймворка.
хорошо
подумалось, может имеет смысл вызывать исключение вместо редиректа на страницу с описанием ошибки?
типа
new HttpException(404, «Page not found»)
Ну, это уже по желанию. В принципе, да, было бы логичным 404 выдавать в таком случае.
Ценный пост. Спасибо.

Кстати, вы не подскажете как бороться с тем, что при $.post объекта созданного в javascript не вызывается action на сервере? Я уже замучился с этим. Видимо с сериализацией объекта на jquery или методом передачи что то не то.
Нет, просто не доходит до серверного метода. Вот тут тоже парень мучался.

stackoverflow.com/questions/848463/controller-parameter-null-when-using-jquery-post-and-asp-net-mvc
Вероятно, я понял, в чем проблема, у меня подобное было. К сожалению, я не смог (не захотел?) детально разобраться, где тут грабли, но пока обхожу эту штуку вот так:

К примеру, у меня есть экшен, принимающий параметр 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 и ещё один объект внутри?
Попробовал смоделировать такую ситуацию, не возникло никаких проблем, да и раньше не сталкивался с подобным. Пока в голову ничего не приходит, увы :(
Пришли код в приват, посмотрю, может, и подскажу.
А я при отправке данных формы через jQuery использую $.post и обхожусь стандартным декоратором Action — [AcceptVerbs(HttpVerbs.Post)]. И никаких лишних телодвижений.
Ну, я и написал, что это не такая уж жуткая проблема. Просто я чисто из собственных эгоистических побуждений предпочитаю, чтобы адресная строка браузера на моем сайте использовалась только для доступа к страницам, которые я предпочту показать. Использование же $.post просто ограничивает число способов, которыми можно при этом воспользоваться :)
А я не прописывал AcceptVerbs, но у меня тоже все работает.
Если их не прописывать, то ваш Action будет обрабатывать и GET и POST запросы. Как бы для однозначного разграничения методов по принимаемым запросам. Вроде как во второй версии MVC был отдельный декоратор для ajax. Но это для меня уже тайна, я свернул работу в ASP.NET =\
Весьма интересная ссылка. К счастью, я редко использую get и еще реже JsonResult, и, к счастью, в тех местах, где я их использую, важные данные не возвращаются. Теперь буду еще осторожнее, спасибо.
Sign up to leave a comment.

Articles