C# SPA(热毛巾)-如何更改约定以处理/请求剃须刀视图?
以热毛巾SPA模板为例,假设我需要一个管理员链接和视图,该链接和视图只显示给具有管理员角色的登录用户。应该足够简单,对吗 使用Razor(或WebForms或其他什么,其实并不重要)视图,只需在nav.cshtml中包含以下内容:C# SPA(热毛巾)-如何更改约定以处理/请求剃须刀视图?,c#,asp.net-mvc-4,durandal,hottowel,C#,Asp.net Mvc 4,Durandal,Hottowel,以热毛巾SPA模板为例,假设我需要一个管理员链接和视图,该链接和视图只显示给具有管理员角色的登录用户。应该足够简单,对吗 使用Razor(或WebForms或其他什么,其实并不重要)视图,只需在nav.cshtml中包含以下内容: if(HasRole("Administrator")){ @* hyperlink here eg /Views/Admin *@ } 并在ViewsController上执行以下操作: return PartialView("Administrator"
if(HasRole("Administrator")){
@* hyperlink here eg /Views/Admin *@
}
并在ViewsController上执行以下操作:
return PartialView("Administrator");
必须能够更改约定,例如,小部件的路由查找http://server/Views/widget
而不是http://server/App/views/widget.htm
和(可能有选择地?)禁用视图请求的缓存
在我看来,主要的替代方案是公开那些不应该向任何从浏览器查看页面源代码的人公开的内容。如果不应该显示某些内容,我宁愿不将其包含在HTML输出中,也不愿将其全部发送并有选择地隐藏/显示客户端。您可以使用PartialView渲染,并将部分视图数据传回ajax调用
已经有一个问题涉及到这一点:所以我得到的是: 在main.js中,将viewLocator.useConvention调用替换为:
viewLocator.useConvention(null,"/Views",null);
使用以下内容创建ViewsController:
public class ViewsController : Controller
{
public ActionResult Render(string id)
{
return PartialView(id);
}
}
并将以下内容添加到App_Start\RouteConfig.cs:
routes.MapRoute(
name: "SPAViews",
url: "Views/{id}",
defaults: new { action = "Render" }
);
它不考虑客户端缓存请求,但90%是这样。你要选择答案吗?哈哈,祝你好运。缓存在客户端,而不是控制器上。