在视图中创建变量并分配

时间:2014-03-03 15:08:11

标签: asp.net asp.net-mvc

我需要在我的视图中创建一个字符串变量并分配给一个隐藏的输入,该输入绑定到我的强类型模型上的属性

我想这就像是

@Html.HiddenFor(m=>m.nodelist, new {@value = myVar})

然而无法正常工作

3 个答案:

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