我需要在我的视图中创建一个字符串变量并分配给一个隐藏的输入,该输入绑定到我的强类型模型上的属性
我想这就像是
@Html.HiddenFor(m=>m.nodelist, new {@value = myVar})
然而无法正常工作
答案 0 :(得分:2)
不要试图在html帮助器上设置@value
属性。这不是那些帮助者设计工作的方式。它们被设计为绑定到传递给此视图的视图模型上的相应属性的值。
所以它很简单:
@Html.HiddenFor(m => m.nodelist)
并在渲染此视图的控制器操作中,您将视图模型上的相应属性指定为所需的值:
public ActionResult Index()
{
MyViewModel model = ...
model.nodelist = someVariable;
return View(model);
}
另一方面,如果这个变量实际上是一个javascript变量,那么显然应该使用javascript将它分配给隐藏字段:
<script type="text/javascript">
var myVar = 'some value';
$('#nodelist').val(myVar);
</script>
或者如果您不使用jQuery:
<script type="text/javascript">
var myVar = 'some value';
document.getElementById('nodelist').value = myVar;
</script>
答案 1 :(得分:0)
myVar是javascript变量吗?
您可以为隐藏字段指定ID属性。
@Html.HiddenFor(m=>m.nodelist, new {@id = "hdnNodeList"})
并使用javascript或jquery,您可以执行以下操作
$('#hdnNodeList').val(myVar);
或者如果myVar是一个C#变量你可以尝试以下(这将呈现一个html输出,虽然你可以在这里做,最好在控制器中为m.nodelist分配一个值,如果可能的话)
$('#hdnNodeList').val('@myVar');
答案 2 :(得分:0)
使用简单的html隐藏字段并保持其名称与属性名称相同。 这完美地运作
@{
string val=myVar;
}
<input type="hidden" name="nodelist" value="@val" />