c# - SPA( Hot Towel )-如何更改约定以处理/请求 Razor View ?

标签 c# asp.net-mvc-4 durandal hottowel

以 Hot Towel SPA 模板为例,假设我需要一个管理链接和 View ,该链接和 View 仅对具有管理员角色的登录用户显示。应该很简单吧?

使用 Razor(或 WebForms 或其他任何东西,实际上无关紧要) View ,将其放入 nav.cshtml 中将是一件简单的事情:

if(HasRole("Administrator")){
    @* hyperlink here eg /Views/Admin *@
}

并对 ViewsController 执行以下操作:

return PartialView("Administrator");

肯定可以更改约定,例如,Widget 的路由查找 http://server/Views/widget 而不是 http://server/App/views/widget.htm 和(也许有选择地?)禁用 View 请求的缓存。

在我看来,主要的替代方案是将不应该向从浏览器查看页面源代码的任何人公开的内容公开。如果不应显示某些内容,我宁愿根本不将其包含在 HTML 输出中,也不愿将其全部发送下来并有选择地隐藏/显示客户端。

最佳答案

所以这是我得到的:

在 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%。

关于c# - SPA( Hot Towel )-如何更改约定以处理/请求 Razor View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17059346/

相关文章:

javascript - 使用 Require 和 Resharper 进行前端 javascript 测试

jquery - Infragistics 使用 Hot Towel/Durandal SPA 应用程序点燃 UI 网格

c# - 使用 .NET 正则表达式解析引号之间的文本

c# - 未按预期处理只读违规

c# - 通过网页发送 Outlook 电子邮件

c# - 在 ASP MVC 4(测试版)中将 DateTime 发布到 ApiController

asp.net-mvc-4 - 通过 OAuth 2 "Invalid parameter value for redirect_uri: Missing authority: "连接到 Google

asp.net-mvc - 已为布局页面定义部分但未呈现 "~/Views/Shared/_Layout.cshtml": "head"

javascript - Kendo 源过滤器不起作用

c# - 在 EF 上进行性能测试时的并发延迟