c#变量赋值从javascript变量错误(CS1002:;预期)

时间:2017-09-04 15:25:35

标签: javascript c# asp.net asp.net-mvc razor

我试图从ASP.Net MVC中的javascript变量中分配一个c#变量。但我得到" CS1002:;预期"错误。

  function openEditJoining(joining_id) {
           @{ 
               int joiningId = @:joining_id ;
           }
  }

3 个答案:

答案 0 :(得分:0)

C#和JS在不同的地方处理,因此您无法直接从JS将变量分配给c#

其他选择:

  • 使用js将变量存储在cookie中,如果来自c#
  • 则存取
  • 使用AJAX调用/表单提交等向服务器发布请求。

答案 1 :(得分:0)

C#代码是服务器端代码,这意味着它在服务器上运行。 JavaScript代码在浏览器中运行。

整个周期如下:

请求进来 - >所有C#代码都被执行 - >渲染结果将被发回

这意味着,你可以做这样的事情(在.cshtml内):

function openEditJoining(joining_id) {
    return @Model.JoiningId;
}

首先运行C#代码并让我们说JoiningId = 56,返回的结果将是:

function openEditJoining(joining_id) {
    return "56";
}

这完全有效,因为服务器端代码首先执行。但是,你正在尝试反过来,这是非法的。一旦结果返回给客户端,它就不是C#;它现在都是客户端。

您可以使用查询字符串或请求正文在请求中发送变量。例如。将请求发送为localhost:49976/[controllerName]/joinings?id=56并在该控制器内部,将操作方法​​的签名更改为:

public IActionResult Joinings(int id) {
}

现在,id参数将获取查询字符串中发送的值。当然,只要查询字符串和方法参数中定义的字符串相同,id就可以命名。或者,您可以在请求正文中发送数据(例如,使用POSTPUT)。 希望有所帮助。

答案 2 :(得分:0)

为什么不从隐藏字段中获取此值?喜欢 https://jsfiddle.net/Alan_van_Buuren/7kg99kh3/

  <div class="container">
      <h3>Why don't get this value from a hidden field? like</h3>
      <p>I see your question in: https://stackoverflow.com/questions/46040155/c-variable-assignment-from-javascript-variable-error-cs1002-expected</p>
      <div>
        <div class="form-group">
          <label>Your value :</label>
          <input type="text" id="field" class="form-control" />
          <input type="hidden" id="yourFieldInModel" class="form-control" />
        </div>
        <button class="btn btn-info">Send to model...</button>
      </div>
      <p id="valueHidden">The value is: </p>
    </div>

    <script>
    //Method that assign your frontValue into a field in model    
    function getSome(valueFromModel) {
      // TODO: anything
      $('#yourFieldInModel').attr('value', valueFRomModel);
    }

    $(document).ready(function() {
      $('#field').on('change', function() {
        var thisValue = $(this).val();
        $('#valueHidden').text('The value is ' + thisValue);
        getSome(thisValue);
      });
    });
</script>
相关问题