我试图从ASP.Net MVC中的javascript变量中分配一个c#变量。但我得到" CS1002:;预期"错误。
function openEditJoining(joining_id) {
@{
int joiningId = @:joining_id ;
}
}
答案 0 :(得分:0)
C#和JS在不同的地方处理,因此您无法直接从JS将变量分配给c#
其他选择:
答案 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
就可以命名。或者,您可以在请求正文中发送数据(例如,使用POST
或PUT
)。
希望有所帮助。
答案 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>