- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于所有 Razor 专家,我有一个非常简单的问题。我正在尝试使用Url.Content()将jQuery $ .ajax()调用到URL,以将相对于本地的路径转换成相对于根的路径。这样,Razor对我的@section的末尾位置感到有些困惑。我希望能够内联指定URL,但是当我这样做时,Razor认为$ .ajax()参数列表的末尾是我@section的末尾。我使用@section是因为我想使用布局将javascript放在每个文件的底部。为什么 Razor 会变得如此困惑?我什至尝试使用@(Url.Content(...)),但这也不起作用。
另外,这是解决问题的最佳方法吗?我正在使用ASP.NET MVC 4 Preview。
可以使用:
@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")',
dataType: 'html',
success: function (result) {
$('tbody').html(result);
}
}); //Razor thinks this is the curly-brace that ends the section!
});
</script>
}
最佳答案
这很可能取决于解析器的行为。当解析器遇到@
符号时,解析器将切换到代码模式,并读取隐式表达式Url.Content("~/Logging.GetMessages")
(好吧,实际上它将读取直到'
符号,确定它在表达式中不是有效字符,并回溯直到在此阶段之后,解析器与您的 View 有点混淆,因为当遇到最终的)
字符并认为这是代码跨度的结尾时,解析器很可能处于代码模式。
现实情况是,在带有C#的 Razor View 中使用javascript时必须非常小心。到代码的转换是明确的,例如}
和@
之后,但是要确定向标记的过渡要困难一些。
除了 Razor ,我的建议是将您的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 - MVC4 Razor对牙套感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9366169/
在 VS2008 的 resharper 4.5 中,有没有办法在开始大括号和结束大括号之间显示一条实线。 最佳答案 您可以通过安装 CodeRush Xpress(它与 ReSharper 兼容)将
我是一名优秀的程序员,十分优秀!