asp.net-mvc – MVC4 Razor对大括号感到困惑
发布时间:2020-12-15 20:14:01 所属栏目:asp.Net 来源:网络整理
导读:我有一个相当简单的问题,所有的剃刀专家在那里.我正在尝试对一个URL进行jQuery $.ajax()调用,使用Url.Content()将家庭相对路径转换为根相对路径.在这样做的时候,Razor对我的@section的结尾位置感到困惑.我希望能够直接指定URL,但是当我这样做时,Razor认为$.a
我有一个相当简单的问题,所有的剃刀专家在那里.我正在尝试对一个URL进行jQuery $.ajax()调用,使用Url.Content()将家庭相对路径转换为根相对路径.在这样做的时候,Razor对我的@section的结尾位置感到困惑.我希望能够直接指定URL,但是当我这样做时,Razor认为$.ajax()参数列表的结尾是我的@section的结尾.我使用@section,因为我想使用布局将我的
JavaScript放在每个文件的底部.为什么剃刀变得如此困惑?我甚至尝试使用@(Url.Content(…)),但这也不起作用.
此外,这是解决问题的最佳方式吗?我正在使用ASP.NET MVC 4预览. 这样做: @section Scripts { <script type="text/javascript"> var getMessagesUrl = '@Url.Content("~/Logging/GetMessages")'; $(document).ready(function () { $.ajax({ url: getMessagesUrl,dataType: 'html',success: function (result) { $('tbody').html(result); } }); }); </script> } 这不是: @section Scripts { <script type="text/javascript"> $(document).ready(function () { $.ajax({ url: '@Url.Content("~/Logging/GetMessages")',success: function (result) { $('tbody').html(result); } }); //Razor thinks this is the curly-brace that ends the section! }); </script> } 解决方法
这可能是解析器的行为.当遇到@符号时,解析器将切换到代码模式,并将读取隐式表达式Url.Content(“?/ Logging.GetMessages”)(实际上它将读取直到’符号,确定它不是有效的字符在一个表达和追溯中返回直到结束).在这个阶段之后,解析器对您的观点有点混淆,因为它可能在遇到最终}字符时处于代码模式,并认为它是代码跨度的结束.
现实是,在使用C#的剃须刀视图中使用JavaScript时,您必须非常小心.对代码的转换是明确的,例如@和之后{,但转换到标记有点难以确定. 除了剃刀之外,我的建议是将您的JavaScript应用程序代码粘贴到外部文件中,并利用data- *属性将元信息传达到您的应用程序代码,例如: <script id="messageScript" type="text/javascript" src="/Scripts/messages.js" data-messages="@Url.Content("~/Logging/GetMessages")"></script> 您可以访问哪些: (function($) { $(function() { var $this = $("#messageScript"); $.ajax({ url: $this.attr("data-messages"),type: "html",success: function(result) { $("tbody").html(result); } }); }); })(window.jQuery); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 禁用默认按钮或输入密码在asp.net c#
- ABP官方文档(八)【会话管理】
- ASP.NET找到了具有相同ID“x”的多个控件.的FindControl
- Asp.net 4.0 Forms Authentication和FriendlyUrls
- asp.net – 设置Orchard开发工作区
- asp.net – 如何从进程中慢慢迁移到将Redis用作会话状态提供
- asp.net – Service Fabric中的.NET Core RC2
- asp.net – Response.Write和UpdatePanel
- asp.net – 如何忽略Model属性的验证?
- ASP.NET MVC4会话状态存储用户名
推荐文章
站长推荐
- asp.net – 将包含子集合的DTO映射回域模型的设计
- ASP.NET复选框与自定义设计
- asp.net – 注册.NET 4.5 IIS 10 Windows 10
- asp.net-mvc – 在不更新的其他.config文件上的A
- asp.net-mvc-2 – 将复杂对象从View传递给Contro
- asp.net – 与蜘蛛交易相关的各种NHibernate错误
- asp.net-mvc – ASP.NET MVC获取View的最后修改日
- ASP.NET – 如何检查浏览器支持html5?
- 扩展GridView实现的一个自定义无刷新分页,排序,
- asp.net-mvc – asp.net mvc5 webapi2,如何通过r
热点阅读