Ken*_*vet 13 javascript c# razor asp.net-mvc-3
必须嵌入javascript代码块
<script type='text/javascript'>
...
</script>
Run Code Online (Sandbox Code Playgroud)
但Razor代码不会编译在.js文件中,包含在.cshtml文件中.
如何使这项工作?或者还有其他优雅的方式来产生类似的效果吗?
谢谢.
jcr*_*898 20
当我遇到这个问题时,有时候我会在.csh文件中提供一个可以在.cshtml文件中访问的函数...
// someFile.js
var myFunction = function(options){
// do stuff with options
};
// razorFile.cshtml
<script>
window.myFunction = new myFunction(@model.Stuff);
// If you need a whole model serialized then use...
window.myFunction = new myFunction(@Html.Raw(Json.Encode(model)));
</script>
Run Code Online (Sandbox Code Playgroud)
不一定是最好的选择,但如果你必须这样做它就会做...
您可能尝试的另一件事是在您的html元素上使用数据属性,例如jQuery.validate.unobtrusive如何...
//someFile.js
var options = $("#stuff").data('stuff');
// razorFile.cshtml
<input type="hidden" id="stuff" data-stuff="@model.Stuff" />
Run Code Online (Sandbox Code Playgroud)
下面是一个提供 Javascript 服务的 Razor 网页示例(不是 MVC 视图,尽管这很相似)。当然,动态编写 Javascript 文件并不常见,但这里仍然有一个示例。我曾经使用过这个,当时我希望提供 JSON 数据和其他一些计算成本昂贵且很少更改的内容 - 因此浏览器可以包含它并像常规 JS 文件一样缓存它。这里的技巧只是设置Response.ContentType,然后<text>为你的 Javascript 使用类似 Razor 标签的东西。
@{
Response.ContentType = "text/javascript";
Response.Cache.SetLastModified(System.Diagnostics.Process.GetCurrentProcess().StartTime);
Response.Cache.SetExpires(System.DateTime.Now.Date.AddHours(28));
Response.Cache.SetCacheability(System.Web.HttpCacheability.Public);
<text>
var someJavaScriptData = @someSortOfObjectConvertedToJSON;
function something(whatever){
}
</text>
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以将其包含在其他 Razor 文件中:
<script src="MyRazorJavascriptFile.cshtml"></script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24283 次 |
| 最近记录: |