vici mvc鼓励分离代码和标记,所以对于 javascript 也是如此。javascript 代码实际上是代码,而不是标记,所以它并不真正属于HTML 模板中。vici mvc容许你动态地将javascript 潜入要呈现的视图中。你可以在控制器(controller),控件(controls),和组建( components)中完成这些操作。
您可以 从字符串、 文件或嵌入的资源 嵌入 javascript 。
下面方法都是可用的:
所以这些方法要不是潜入到<head>标签内,就是潜入到单独的<script>中。请注意 RegisterJavascriptInclude()方法中参数url,它必须指向根文件夹(也就是以“~/”开始)。
当以字符串形式潜入javascirpt时,关键字是必须的。当你添加javascript不止一次使用同一个关键字时,只有第一个会起作用。这个特性当你在自定义控件中添加javascript时是非常有效的。比如一个控件会显示多次,对应的javascript只会添加一次。
RegisterStartupJavascript 方法是一种特殊情况,他会在窗体呈现视图完成之前执行,也就是在执行</body>之前添加javascript。这直接会导致执行javascript之后才呈现网页。注意,这可能会导致一些问题:有些浏览器不支持在网页还没有完全呈现前执行javascript来修改DOM,好点的替代方法就是document.read()方法,这个在主流的javascirp框架jquery中都得到很好的支持。
一、 When to call RegisterJavascriptXXX() methods
答案是:不影响。javascript总是伴随着视图的呈现执行,所以调用任何注册的javascript方法不会立即得到响应,当视图完全呈现,才会发生实际改变。
如果一些javascript被包含在所有的控制器中,你可以建立一个全局的基控制器类和一个 [BeforeAction]方法,因为所有的控制器都继承基控制器类,所以javascript会被添加到所有的控制器类中。
未完待续: