Pull to refresh

Comments 9

А зачем проверять какой-то {action}.{result}
если можно написать что-то типа:

if(Request.Headers[«x-requested-with»] == «XMLHttpRequest»)
{
Json().ExecuteResult(context);
}
else
{
View().ExecuteResult(context);
}

Чтобы выбирать Json по запросу, а не по заголовку.
на мой взгляд, для решения это задачи лучше бы подошло создание своего варианта ActionMethodSelectorAttribute, который призван выбирать необходимое действие из нескольких. определив два одинаковых по названию действия с разными параметрами, и пометив их таким атрибутом вы бы могли определить когда и какой должен вызваться

тогда у вас были бы такие например запросы:

ht_p://localhost/Blog/Comments/0.

и

ht_p://localhost/Blog/Comments/0/json или к примеру ht_p://localhost/Blog/Comments/0/?get=json

обработав в ActionMethodSelectorAttribute наличие парамера маршрута (первый случай) или параметра запроса get вы могли бы позволить выбрать нужное действие

на мой взгляд это гораздо лучше смешивания в одну кучу двух вариантов действия. я думаю, действие должно возвращаеть только один результат одного типа
Мнение понятно, но я старался сделать что-то похожее на respond_to из RoR.
info.michael-simons.eu/2007/08/06/rails-respond_to-method/

Да и на мой взгляд смешивания никакого нет, т.к. возвращается один результат, одного типа ComplexResult.
А зачем в третьем листинге в этом фрагменте:

return new ComplexResult
{
Json = () => Json(strings),
View = () => View(strings)
};

нужно использовать лямбды?
Поясните пожалуйста
Вероятно, чтобы не выполнялись все представления сразу?..
Лямбды в данном случае нужны для указания действий, которые необходимо выполнить.
В зависимости от условий запроса ComplexResult сам выберет, что необходимо вернуть Json или View.
Я правильно понял вопрос?
Sign up to leave a comment.

Articles