如何根据索引中控件的onchange事件在mvc 5视图中设置隐藏字段的值

时间:2014-09-26 13:53:47

标签: javascript asp.net-mvc-5

所以我在这样的模型中有一个列表:

public class model
{
    public string value1 {get;set;}
    public string value2 {get;set;}
    public List<subModel> value3 {get;set;}
}

public class subModel
{
    public string value4 {get;set;}
    public string value5 {get;set;}
    public bool dirtyFlag {get;set;}
}

在我看来,我能够像这样显示这个模型:

@for (int i = 0; i < Model.subModel.Count; i++ )
{
    @Html.DropDownListFor(model => model.subModel[i].value4, Model.value4Lookup, 
          Model.subModel[i].value4, new { onchange = "MarkRecordDirty()" })
}

我希望能够使用下拉列表的onchange事件将dirtyFlag设置为true,但我不确定如何在Model.subModel [i]中传递[i]的值。 value4到javascript函数MarkDirtyRecord()

任何想法? 感谢

1 个答案:

答案 0 :(得分:0)

好吧,如果所有你需要做的事情i的值传递给客户端代码,你可以用字符串连接来做到这一点:

onchange = "MarkRecordDirty(" + i.ToString() + ")"

循环的每次迭代都会创建新的输出,因此生成的标记会有不同的输出:

... onchange="MarkRecordDirty(0)" ...
... onchange="MarkRecordDirty(1)" ...
... onchange="MarkRecordDirty(2)" ...
... onchange="MarkRecordDirty(3)" ...
etc.

至于提出的确切问题,那应该可以解决问题。但是,我怀疑手头的问题可能会有更多。至少这将使代码相当脆弱,并假设依赖于记录的排序。这可能不会导致任何问题,但可能会再次出现问题。如果不了解您正在构建的整体解决方案,我无法知道。