我是 ASP.NET/MVC3 的新手,我试图弄清楚如何将我的 JavaScript(包含 C#)与 HTML 的其余部分分开。

如果我将它们放入 .JS 文件并使用脚本标记插入它们,那么它们的 C# 方面将停止工作。在 MVC 3 razor 中分​​离还包含 C# 代码的 JavaScript 代码的最佳方法是什么?

谢谢。

最佳答案

出于多种原因,最好将大部分(如果不是全部)JS 放入单独的 JS 文件中(以便您可以利用重用、缩小、浏览器优化、内容交付网络等)

要将服务器端 razor 代码的结果读入您的 JS 文件,请使用以下方法之一:

1) 将您的 Razor 代码放入 View 中的 javascript 变量中(未测试代码)

<script type="text/javascript">
  if(!MyGlobalVariables){
     MyGlobalVariables = {};
  }
  MyGlobalVariables.IndexUrl = "@Url.Action("Index")";
</script>

2) 使用自定义属性 (最好以 data- 作为前缀,如 HTML 5 spec 中所建议)。请参阅此处的相关讨论:Can I add custom attribute to HTML tag?
<div data-index-url="@Url.Action("Index")"></div>

然后,在 jQuery 中使用 $(this).attr("data-index-url") 访问呈现的 Razor 标记。

3) 将 C# 放入 View 上的隐藏输入字段 ,并读取 JS 文件中的隐藏输入。
<input id="indexUrl" type="hidden" value="@Url.Action("Index")" />

要在 jQuery 中阅读此内容,您可以使用 $("#indexUrl").val()

关于c# - 在cshtml Razor View 中分离JavaScript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9682351/

10-10 14:23
查看更多