Проблемы при попытке объединить «View» и «Edit» в одном представлении в ASP.NET-MVC - PullRequest
2 голосов
/ 03 апреля 2009

У меня есть галерея изображений, которая имеет следующий маршрут:

    // gallery id
    routes.MapRoute(
       "gallery-route",
       "gallery/{galleryID}/{imageID}/{title}",
       new { controller = "Gallery", action = "Index", galleryID = (string)null, imageID = (string) null, title = (string) null},
       new { galleryID = @"\d+" }
    );

У меня могут быть такие URL как:

example.com / gallery / 4/23 - показывает галерея 4 и изображение 23

example.com / gallery / 4 - показывает Галерея 4 и первое изображение в этом галерея

Я пытался создать режим «Редактирование на месте», который позволяет администратору редактировать изображения и сталкивается с несколькими проблемами. В настоящее время функциональность редактирования не AJAX.

1) Как сохранить параметр режима «залипания»? Рядом с каждым изображением не будет кнопки «Изменить». я хочу, чтобы режим редактирования был «липким», но потом я обнаружил, что мне нужно либо установить его в сеансе, либо добавить параметр для каждой ссылки на странице, которая неуклюжа.

2) У меня включено кэширование для этого представления. Поэтому, если я внесу изменение и обновлю - исходное кэшированное представление останется.

Кто-нибудь может дать мне какие-нибудь мысли?

Ответы [ 2 ]

0 голосов
/ 19 апреля 2009

Вам нужно очистить кеш страницы, когда внесено изменение. Не показывайте кэшированную страницу и не кэшируйте страницу, когда пользователь вошел в систему как администратор, так как у него будет другое представление с элементами управления редактированием и т. Д. Для режима закрепления, когда администратор может выбрать режим редактирования по всему сайту, должен быть сохранен в сеансе. Я использую что-то на основе this для кэширования действий контроллера, с дополнительным методом, чтобы определить, следует ли кэшировать вывод / использовать кэшированный вывод.

0 голосов
/ 03 апреля 2009

почему бы не изменить вывод в представлении в зависимости от статуса авторизации пользователей. Использование встроенного кода и вспомогательных функций Html в ascx для записи значений в HTML для ролей, доступных только для чтения, и для ролей редактора, добавьте форму публикации вокруг элементов управления вводом с текущими значениями. Затем на дескрипторе контроллера обработайте публикацию в отдельной процедуре, чтобы сохранить правки.

или просто добавьте представление редактирования ascx, а также представление чтения ascx.

Также при запуске процедуры пост-контроллера замените объект кэша новыми данными, записанными в посте.

наконец, у вас есть проблемы с кэшированием изображений при администрировании галереи. Попробуйте добавить в запрос случайную строку, например:

function GetNewUrl(url)
{
Random rnd = new Random();

return url +"?"+rnd.Next(1000).ToString();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...