C#将资源嵌入.Js文件而不是.cshtml

时间:2015-01-30 06:16:36

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

我有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";

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

例如:

在视图中你正在这样做:

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");