如何在.js文件中嵌入Razor C#代码?
必须嵌入javascript代码块
...
但是Razor代码不会在.js
文件中包含的.js
文件中编译。
如何使这项工作? 或者还有其他优雅的方式来产生类似的效果吗?
谢谢。
当我遇到这个问题时,有时候我会在.csh文件中提供一个可以在.cshtml文件中访问的函数…
// someFile.js var myFunction = function(options){ // do stuff with options }; // razorFile.cshtml
不一定是最好的选择,但是如果你必须这样做的话……
您可能尝试的另一件事是在您的html元素上使用数据属性,例如jQuery.validate.unobtrusive如何…
//someFile.js var options = $("#stuff").data('stuff'); // razorFile.cshtml
你不能。 你甚至不应该尝试。 将它们分开。 换句话说 ,但你应该研究Unobtrusive JavaScript 。 整个项目中应用的设计模式是一个好主意。
这是一个示例Razor网页(不是MVC视图,虽然它会类似),它将提供Javascript。 当然,动态编写Javascript文件是非典型的,但这里仍然是一个示例。 在我希望提供JSON数据和其他一些昂贵的计算和很少更改的东西的情况下,我曾经使用过一次 – 所以浏览器可以包含它并像普通的JS文件一样缓存它。 这里的技巧只是设置Response.ContentType
,然后使用类似Razor
标签的Javascript。
@{ 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); var someJavaScriptData = @someSortOfObjectConvertedToJSON; function something(whatever){ } }
然后,您可以将其包含在您的其他Razor文件中:
虽然我同意你应该三思而后行在你的Javascript文件中使用Razor,但有一个Nuget包可以帮助你。 它被称为RazorJS 。
该软件包的作者有一篇关于它的博客文章 ,解释了如何使用它。
也许我可以提供一个有用的解决方法,具体取决于你想要完成的任务。
我很想找到一种方法来评估java脚本文件中的剃刀表达式。 我想附加一个jQuery click事件处理程序来提交在许多页面上找到的特定类。 这应该在jQuery文档就绪事件处理程序中完成。 此单击事件将执行ajax调用。
如果应用程序位于根级别以下,则这些URL应该是应用程序相对的,而不是绝对的。 所以,我想用类似的东西
$(document).ready(function () { $('input[type="submit"].checkit)').click(function (e) { $.ajax({ type: 'POST', url: '@Url.Content("~/checkit")', //Razor expression here dataType: 'json', success: function (data) { if (!data) { e.preventDefault(); handleResponse(data); } }, data: null, async: false }); }); });
我通过将代码包装在函数Checkit中并将调用移动到布局视图来解决这个问题:
$(document).ready(function () { Checkit('@Url.Content("~/checkit")'); });
大多数javascript代码仍然在javascript文件中。
包括一个只包含js的.cshtml怎么样?
.csthml父
@RenderPage("_scripts.cshtml")
包含js的_scripts.cshtml
上述就是C#学习教程:如何在.js文件中嵌入Razor C#代码?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/953193.html