2017-09-04 44 views

回答

0

C#和JS都在不同的地方进行处理,所以你不能一个变量直接从JS分配到C#

其他选项:

  • 商店变量在cookie的使用JS,如果访问从C#
  • POST请求到服务器使用AJAX调用/表单提交等。
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)。 希望有所帮助。

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>