【问题标题】:C# embed resource in .Js file rather then .cshtmlC# 将资源嵌入 .Js 文件而不是 .cshtml
【发布时间】:2015-01-30 06:16:36
【问题描述】:

我有 MVC 应用程序。很多逻辑都存在于 javascript 中。

我想将 C# 代码嵌入到视图中。例如

 @Url.Action("Dosomething", "something")

                   Or

 @MyNamespace.SomeVar

一切都按预期工作,直到我只有代码在视图 (.cshtml) 文件中。但随着逻辑的增加。我将 javaScript 移动到另一个文件 (.js) 中。整个代码都坏了。

是否有相同的解决方案或解决方法?

好的,所以我将在我的视图文件中获取价值,然后在 javascript 中使用它。

不过,我有一个后续问题...

如何访问视图中的枚举值。

我正在做这样的事情:

 var valjs = '@MyEnum.VAL1'

这导致名称被复制到 javascript 中,如下所示:

var valjs = 'VAL1'

但我想要对应的枚举值:

var valjs = "1";

我该如何解决这个问题?

【问题讨论】:

  • 视图中是否包含了js文件?
  • 仅针对视图解析 Razor 代码,而忽略外部文件。您需要在主视图中设置变量,以便可以从外部文件访问它们或使用元素中的data 属性,然后使用var myVar = $(myElement).data(..); 访问它们
  • 我的第二个问题的解决方案是使用枚举语法,例如 var valjs = '@( (Int32)MyEnum.VAL1)'

标签: javascript c# asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

问题是 razor 代码是服务器端的,它只能在 View 中工作,当你将 js 代码移动到单独的 js 文件中时,razor 代码将无法在那里工作,因为它是服务器端代码,你必须使用 html5用于访问 razor 值的数据属性。

例如:

在 View 中你正在这样做:

var url = '@Url.Action("Dosomething", "something")';

这在视图中可以正常工作,但在单独的 js 文件中它将无法工作,因为 @Url.Action("Dosomething", "something") 是服务器端,您可以执行以下操作:

<div id="url" data-url="@Url.Action("Dosomething", "something")">
</div>

在js文件中:

 var url = $("#url").data("url");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-29
    • 2012-12-20
    • 1970-01-01
    • 2017-02-06
    • 2011-10-30
    • 2011-10-26
    • 2013-04-04
    • 1970-01-01
    相关资源
    最近更新 更多