小编Tom*_*omy的帖子

将JavaScript放在部分视图中是否可以

我正在使用Web应用程序,其中主页面包含两个部分:始终可见的常量块和由3个部分视图之一组成的信息块.每个部分视图都作为AJAX请求的结果出现,并且只加载一次(在jquery提供切换窗口之后).它运作良好,但我遇到了一个问题.

部分视图的html代码包含在常量块和info-block中使用的js函数.当页面加载时,这些函数可以"看到"彼此并且它可以工作,但是resharper找不到函数声明并警告我这一点.我无法通过将它们转移到外部js文件来解决问题,因为razor语法可以在他们的代码中找到.

我该怎么办?

谢谢.

更新:

最后,我决定解决将js代码与视图分离的问题.所以新的问题是如何将razor语法包含到js文件中或者什么是可接受的替代方案.我发现的流行解决方案是使用全局变量,数据属性和我更喜欢的解决方案 - John Katsiotis的RazorJS库.

http://djsolid.net/blog/razorjs---write-razor-inside-your-javascript-files

我希望它能够稳定运行并使Resharper感到高兴.

干杯!

更新:

3年后,我回忆起这个问题,并决定根据我的经验对其进行更新.事实上,现在我宁愿不建议使用额外的库.特别是如果您不是项目团队中唯一的成员......如果您在所有库中得到保证,它们会受到创建者和社区的支持,并且可以轻松集成到您的IDE中(例如,如果使用特殊语法) .你的团队中的所有人都应该知道它是如何工作的.所以现在我建议做下面的事情:

  1. 将所有JS保存在单独的文件中.尽可能地隔离它.为它提供外部API.
  2. 从您的视图中调用API函数.
  3. 将所有Razor生成的URL,文本消息,常量作为资源参数传递.

例如:

js文件:

$.api.someInitFunction = function(resources){ ... }
Run Code Online (Sandbox Code Playgroud)

视图:

<script>
    $.api.someInitFunction({
        urls: { myAction: '@Url.Action("MyAction", "MyController")' },
        messages: { error: '@errorMessage' },
        consts: { myConst: @myIntConst }
    });
</script>
Run Code Online (Sandbox Code Playgroud)

javascript asp.net-mvc partial-views razor

63
推荐指数
3
解决办法
8万
查看次数

标签 统计

asp.net-mvc ×1

javascript ×1

partial-views ×1

razor ×1