我有两个MVC Razor视图(.cshtml),其中包含几乎相同的Javascript函数。
为了重复删除我的javascript代码,我想将Javascript从视图中提取到包含该函数的单个外部Javascript文件(.js)(带有一个参数,可以用来区分每个的微小差异需求)视图)。
视图中的Javascript包含用于访问许多asp.net资源文件(.resx)文本值的Razor语法(例如var foo ='@ ResourceFileName.Bar';),但Razor引擎很遗憾不会为我解析。< / p>
为了解决这个问题,我可以将所有资源文件文本值作为参数传递给.js文件中的函数 - 但我不希望这样做,因为参数列表会变得非常大。
RazorJS软件包(http://www.nuget.org/packages/RazorJS)允许我在.js文件中使用Razor语法,但这个软件包最后一次发布于2011年,这让我很担心。
如果没有庞大的长参数列表,我可以使用哪些技术来调用外部函数?
答案 0 :(得分:2)
我可以使用哪些技术来调用外部化函数 一个巨大的长参数列表?
它不需要是一个巨大的参数列表。包含所有必要资源属性的单个参数就足够了:
<script>
var args = @Html.Raw(Json.Encode(new
{
foo = ResourceFileName.Foo,
bar = ResourceFileName.Bar,
baz = ResourceFileName.Baz
}));
myFunction(args);
</script>
然后在您的函数中,您可以访问所有这些属性:
function myFunction(args) {
// you can use args.foo, args.bar and args.baz here
}