我想从ASP.Net MVC中的JavaScript变量分配一个C#变量。但是我得到“CS1002:;预计”错误。c#变量分配从JavaScript变量错误(CS1002 :;预计)
function openEditJoining(joining_id) {
@{
int joiningId = @:joining_id ;
}
}
我想从ASP.Net MVC中的JavaScript变量分配一个C#变量。但是我得到“CS1002:;预计”错误。c#变量分配从JavaScript变量错误(CS1002 :;预计)
function openEditJoining(joining_id) {
@{
int joiningId = @:joining_id ;
}
}
C#和JS都在不同的地方进行处理,所以你不能一个变量直接从JS分配到C#
其他选项:
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
)。 希望有所帮助。
为什么不从隐藏字段获取该值?像 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>
你不能因为C#代码在服务器的JavaScript代码(浏览器)之前执行 – Shyju
谢谢你的信息。 –