Javascript C#在.Js文件而不是.cshtml文件中嵌入资源

Javascript C#在.Js文件而不是.cshtml文件中嵌入资源,javascript,c#,asp.net-mvc,asp.net-mvc-4,razor,Javascript,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,我有MVC应用程序。javascript中有很多逻辑 我想在视图中嵌入C代码。比如说 @Url.Action("Dosomething", "something") Or @MyNamespace.SomeVar 在我只查看(.cshtml)文件之前,一切都按预期进行。但随着逻辑的增加。我将javaScript移到另一个文件(.js)中。整个密码被破解了 是否有解决方案或解决方法? 好的,我将在我的视图文件中获取值,然后在javascript中使用

我有MVC应用程序。javascript中有很多逻辑

我想在视图中嵌入C代码。比如说

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

                   Or

 @MyNamespace.SomeVar
在我只查看(.cshtml)文件之前,一切都按预期进行。但随着逻辑的增加。我将javaScript移到另一个文件(.js)中。整个密码被破解了

是否有解决方案或解决方法? 好的,我将在我的视图文件中获取值,然后在javascript中使用它

一、 但是我有一个后续问题

如何访问视图中的枚举值

我正在做这样的事情:

 var valjs = '@MyEnum.VAL1'
var valjs = 'VAL1'
<div id="url" data-url="@Url.Action("Dosomething", "something")">
</div>
这导致名称在javascript中被复制,如下所示:

 var valjs = '@MyEnum.VAL1'
var valjs = 'VAL1'
<div id="url" data-url="@Url.Action("Dosomething", "something")">
</div>
但我需要相应的枚举值:

var valjs = "1";

如何解决这个问题?

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

例如: 鉴于您正在这样做:

var url = '@Url.Action("Dosomething", "something")';
这在视图中可以正常工作,但在单独的js文件中,它不能作为
@Url.Action(“Dosomething”,“something”)
是服务器端,您可以这样做:

 var valjs = '@MyEnum.VAL1'
var valjs = 'VAL1'
<div id="url" data-url="@Url.Action("Dosomething", "something")">
</div>

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