我有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";
我该如何解决这个问题?
答案 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");