如何在MVC3中的Html beginform中发送javascript var

时间:2014-06-30 11:14:55

标签: javascript jquery html asp.net-mvc-3

我正在尝试使用html beginform将JS变量发送到控制器操作。例如:

@using (Html.BeginForm("Index", "Contrl1", new { SPName = myJSVarcomeshere }, FormMethod.Post))
{ 
    <button id="plot" type="submit" class="btn" > Plot </button>
}

目前问题是JS var不在范围内。我可以使用隐藏字段来实现此目的

1 个答案:

答案 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>