ajax - 在服务器和客户端之间共享 mustache/mustache 模板。 ASP.NET MVC

标签 ajax asp.net-mvc templates razor mustache

我正在使用 mustache.js 在客户端和 mustache 在 ASP.NET MVC3 项目中。

我有 Person.mustache服务器上的 View 文件夹中的模板,我像这样使用:

@Html.Partial("Person")

从 Razor 主 View ( Index.cshtml )。

但是我怎样才能把它转移到客户端呢?浏览器无权访问 Views 文件夹以获取模板的原始内容。不知何故,我必须有一种方法来包含在服务器上输出 Person.mustache 模板的 HTML 原始文本。如果我从 Razor View 中需要它,它会编译它,因为它是普通的服务器模板引擎。

请任何人都可以提供任何想法?谢谢。

最佳答案

嗯,我做了一些东西,行得通,也许有人会想出更好的解决方案。这里是:

@Html 助手的扩展:

public static class ViewExtensions
{
    public static IHtmlString RenderRawContent(this HtmlHelper helper, string serverPath)
    {
        string filePath = HttpContext.Current.Server.MapPath(serverPath);

        //load from file
        StreamReader streamReader = File.OpenText(filePath);
        string markup = streamReader.ReadToEnd();
        streamReader.Close();

        return new HtmlString(markup);

    }
}

并在索引页面的 Razor 主 View 中
@using MyProject.Helpers;

<script type="text/template" id="person_template">

    @Html.RenderRawContent("~/Templates/Person.mustache")

</script>

关于ajax - 在服务器和客户端之间共享 mustache/mustache 模板。 ASP.NET MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9702130/

相关文章:

javascript - ajax 调用的 Rxjs 序列取决于先前调用的结果和处理错误

javascript - 防止AJAX表单提交两次?

jquery - 减少 AJAX 发出的服务器请求

javascript - 用于多个项目的 Ajax 加载器脚本

c# - 对 asp.net mvc 版本号的澄清

c# - 自定义验证属性调用另一个验证属性

c# - 安装 AspNet5RC1 后,无法再在任何以前/新的 MVC 项目中打开 cshtml 文件

C++11:数组的编译时间计算

c++ - 是否有可能在 C++ 中获取类型别名的名称?

C++ 可变参数模板和评估顺序