这一行
$('.current').val(page + ' of ' + @lastPage);
导致最后一个括号被加下划线的红色标语“语法错误”,仅此而已。
然而,这条线
setPage(@lastPage);
完美无缺。
那到底是什么?这导致我视图中的脚本完全停止工作,而且非常令人沮丧。
请问有人对这个问题有所了解吗?
答案 0 :(得分:5)
$('.current').val(page + ' of @lastPage');
OR
$('.current').val(page + ' of ' + '@lastPage');
如果@lastPage评估为3,则呈现的JS看起来像这样
$('.current').val(page + ' of ' + 3);
您希望它看起来像这样
$('.current').val(page + ' of 3');
OR
$('.current').val(page + ' of ' + '3');
答案 1 :(得分:0)
您认为Javascript和(C#)Razor语法在同一环境中同时协同工作(例如HTML和Javascript如何正常工作)。他们没有。将它想象为“Razor为jQuery变量分配值”也是不正确的。
这里要理解的关键是Razor语法将在服务器中进行评估,然后再将响应发送回浏览器(例如,HTML页面)。 Javascript将在浏览器中进行评估,在之后收到服务器的响应。所以它基本上是两个环境。一种思考方式是Razor为浏览器中的Javascript环境做好准备。
比如说,你的Razor代码是这样的:
@{
var id = "foo";
}
$('#@id').show();
你的Javascript甚至不会注意到它中有Razor,因为当它到达它时,它看起来像这样:
$('#foo').show();
这也是Javascript无法分配给Razor的原因;仅仅因为当Javascript“轮到”评估时,Razor就已经完成并且已经完成了。您的上下文现在位于客户端(浏览器),并且您的服务器已经完成,无论您的请求是什么都需要。