我正在尝试使用html beginform将JS变量发送到控制器操作。例如:
@using (Html.BeginForm("Index", "Contrl1", new { SPName = myJSVarcomeshere }, FormMethod.Post))
{
<button id="plot" type="submit" class="btn" > Plot </button>
}
目前问题是JS var不在范围内。我可以使用隐藏字段来实现此目的
答案 0 :(得分:7)
是的,你是对的。编写我们表单的@using语句在服务器上执行--Javascript变量仅存在于客户端上。因此,您必须在表单内使用隐藏字段,并使用javascript变量的值填充该字段。您需要在文档加载后或隐藏字段下方的某处执行此操作。
示例:
@using (Html.BeginForm("Index", "Contrl1", FormMethod.Post))
{
<input type="hidden" name="SPName" id="SPName" />
<button id="plot" type="submit" class="btn" > Plot </button>
}
然后,使用JS填充隐藏字段:
JQuery版本:
<script>
$(function(){
$('#SPName').val(myJSVarcomeshere);
});
</script>
普通JS版:
<script>
window.onload = function() {
document.getElementById('SPName').value = myJSVarcomeshere;
};
</script>