asp.net-mvc如何将 JavaScript 嵌入在Razor LINQ 中发泄出来?

发布时间: 2017/3/25 2:47:44
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

请注意,它是相反的平常的问题。

有一个被某些 guid 控件中添加一个分数的函数。问题是上限存储在页模型的Razor。我需要得到它使用 guid,我收到了我的按钮的 id。

@Model.Answers.Single (=>。Id = = 这里是 JS GUID)。最大
Guid 是 $(invoker).attr("id").substr(3)

函数的代码如下所示。我为我的生活找出要得到它的语法 can'f 它那里。

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);
}

解决方法 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 文件内,使用在这篇文章中提到的方法。

官方微信
官方QQ群
31647020