我有一个图片库,其路线如下:
// 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)我为此视图启用了缓存。因此,如果我进行更改并刷新 - 原始缓存视图仍然存在。
任何人都可以给我任何想法吗?
答案 0 :(得分:0)
为什么不根据用户授权状态更改视图上的输出。在ascx中使用内联代码和Html帮助函数,以便在HTML中为readonly角色写出值,对于编辑器角色,在输入控件周围添加一个post表单,其中包含当前值。然后在控制器句柄上以单独的过程保存编辑。
或者只是添加编辑视图ascx以及读取视图ascx。
当post控制器程序触发时,用帖子中记录的新数据替换缓存对象。
最后,您在管理图库时遇到图像缓存问题。尝试在查询中添加随机字符串,例如:
function GetNewUrl(url)
{
Random rnd = new Random();
return url +"?"+rnd.Next(1000).ToString();
}
答案 1 :(得分:0)
进行更改时,您需要刷新页面的缓存。当用户以管理员身份登录时,不显示缓存页面或缓存页面,因为它们将具有带编辑控件等的不同视图。对于粘性模式,管理员可以选择在整个站点中处于编辑模式必须存储在会话中。我使用基于this的内容来缓存控制器操作,并使用另一种方法来确定是否缓存输出/使用缓存的输出。