尝试合并的问题';视图';和';编辑';在ASP.NET-MVC中的单个视图中

尝试合并的问题';视图';和';编辑';在ASP.NET-MVC中的单个视图中,asp.net-mvc,Asp.net Mvc,我有一个图像库,其路线如下: // gallery id routes.MapRoute( "gallery-route", "gallery/{galleryID}/{imageID}/{title}", new { controller = "Gallery", action = "Index", galleryID = (string)null, imageID = (string) null, title = (string) n

我有一个图像库,其路线如下:

    // 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+" }
    );
我可以有如下网址:

example.com/gallery/4/23-显示 画廊4和图片23

example.com/gallery/4-显示 画廊4和第一张图片 画廊

我试图建立一个“原地编辑”模式,让管理员编辑图像并遇到一些问题。目前,编辑功能是非AJAX的

1) 如何保留“粘性”编辑模式参数。每个图像旁边都不会有“编辑”按钮。我希望编辑模式是“粘性”的,但是我发现我要么需要在会话中设置它,要么需要在页面上的每个链接中添加一个笨拙的参数

2) 我已为此视图启用缓存。因此,如果进行更改并刷新,原始缓存视图将保留


有人能给我一些想法吗?

为什么不根据用户授权状态更改视图上的输出。使用ascx中的内联代码和Html帮助函数,以Html形式写出只读角色和编辑器角色的值,并在输入控件周围添加一个post表单,其中包含当前值。然后在控制器句柄上,在单独的过程中进行post以保存编辑

或者简单地添加一个编辑视图ascx和一个读取视图ascx

此外,当post控制器过程激发时,请使用post中记录的新数据替换缓存对象

最后,在管理库时,可能会出现图像缓存问题。尝试向查询中添加随机字符串,例如:

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

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

}

为什么不根据用户授权状态更改视图上的输出。使用ascx中的内联代码和Html帮助函数,以Html形式写出只读角色和编辑器角色的值,并在输入控件周围添加一个post表单,其中包含当前值。然后在控制器句柄上,在单独的过程中进行post以保存编辑

或者简单地添加一个编辑视图ascx和一个读取视图ascx

此外,当post控制器过程激发时,请使用post中记录的新数据替换缓存对象

最后,在管理库时,可能会出现图像缓存问题。尝试向查询中添加随机字符串,例如:

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

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

}

进行更改时,需要刷新页面的缓存。当用户以管理员身份登录时,不要显示缓存的页面或缓存页面,因为他们将有一个带有编辑控件等的不同视图。对于粘滞模式,管理员可以选择在整个站点处于编辑模式,这必须存储在会话中。我使用基于的内容来缓存控制器操作,并使用附加方法来确定是否缓存输出/使用缓存的输出。

进行更改时,需要刷新页面的缓存。当用户以管理员身份登录时,不要显示缓存的页面或缓存页面,因为他们将有一个带有编辑控件等的不同视图。对于粘滞模式,管理员可以选择在整个站点处于编辑模式,这必须存储在会话中。我使用基于的内容来缓存控制器操作,并使用一个附加方法来确定是否缓存输出/使用缓存输出。

如何执行此操作:“也是在post控制器过程触发时,使用post中记录的新数据替换缓存对象。”?这将大大有助于解决缓存问题。我不知道这是否可能。我认为您的意思是替换ASP.NET缓存对象,但重新阅读此内容,我认为您的意思是数据缓存。我该如何做:“也是在post控制器过程触发时,使用post中记录的新数据替换缓存对象。”?这将大大有助于解决缓存问题。我不知道这是否可能。我认为您的意思是替换ASP.NET缓存对象,但重新阅读此内容,我认为您的意思是数据缓存。为什么将其存储在会话中很笨拙?实际上,更具体地说,是添加一个参数部分,我说的很笨拙。现在我对MVC的了解比我写这篇文章时多得多,我认为会话可能是最好的方式为什么将它存储在会话中很笨拙?实际上,更具体地说,我说的是添加一个参数部分很笨拙。比起我写这篇文章的时候,现在对MVC的了解要多得多,我认为这可能是最好的方式