asp.net-mvc – MVC4 Razor对大括号感到困惑
|
我有一个相当简单的问题,所有的剃刀专家在那里.我正在尝试对一个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-mvc – 如何使用Windsor将依赖项注入到ActionFilte
- 端到ASP.NET MVC的推荐方法
- asp.net-mvc – 剃刀替换的优点(@href)
- asp.net-mvc-3 – @ Html.TextBoxFor文本框在验证失败后未突
- asp-classic – 经典ASP中500 Vs 500.100错误
- asp.net-web-api – Net Web API – 如何在Get上传递URL作为
- Asp.Net MVC验证 – 依赖字段
- asp.net-mvc – ASP.NET MVC FluentValidation PartialView
- ASP.NET Ajax客户端框架无法加载.将ScriptManager放在空白页
- .net – 使用Elmah以编程方式记录错误:记录特定信息
- asp.net-mvc – 错误:无法在LINQ to Entities查
- asp.net-mvc – Kendo:处理Ajax数据请求中的错误
- asp.net-mvc-3 – 自定义成员资格提供程序和统一
- 应该将ASP.NET应用程序池设置为自动回收?
- asp.net – 电子邮件CSS
- asp.net – WebForm_DoPostBackWithOptions没有使
- asp.net-mvc – ASP.NET MVC编辑集合最佳实践 –
- 为什么我需要停止使用%= ...%来渲染并开始使用
- entity-framework – 如何升级EF Core Tools
- asp.net – 是否使用Page_IsValid或Page_ClientV
