Javascript C#在.Js文件而不是.cshtml文件中嵌入资源
我有MVC应用程序。javascript中有很多逻辑 我想在视图中嵌入C代码。比如说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中使用
@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)'