请注意,这与通常的问题相反。
我有一个功能,可以为某个guid识别的控件添加分数。问题是上限存储在Razor页面的模型中。我需要使用我从按钮ID获得的guid来实现它。
@ Model.Answers.Single( => .Id ==这里是JS GUID).Max
guid是$(调用者).attr(“id”)。substr(3)
该函数的代码如下所示。我不能为我的生活弄清楚语法来实现它。
function adjustScore(invoker, delta) {
var target = $("#val" + $(invoker).attr("id").substr(3));
var newValue = +target.html() + delta;
var max = @Model.Answers.Single(_=>_.Id == new Guid()).Max;
if (newValue < 0 || newValue >= max)
newValue = 0;
target.html(newValue);
}
答案 0 :(得分:1)
Razor代码在服务器中执行,razor将生成的输出发送到浏览器。您的javascript将在客户端执行。简而言之,你不能在尝试时将它们混合在一起。
您可以做的是,将您的服务器代码放在控制器中的操作方法中,并使用ajax调用此方法,传递您需要的javascript变量值并使用它。
function adjustScore(invoker, delta) {
var target = $("#val" + $(invoker).attr("id").substr(3));
var newValue = +target.html() + delta;
$.get("@Url.Action("GetMax","Home")",function(max){
if (newValue < 0 || newValue >= max)
newValue = 0;
target.html(newValue);
});
}
假设您的GetMax
中有一个HomeController
操作方法,它将最大值作为十进制值返回。
public decimal GetMax()
{
// query your data and return a decimal
}
我使用Url.Action
辅助方法生成GetMax方法的正确相对路径。如果您的代码位于外部javascript文件中,请使用this post中提到的方法。