根据Counter修改控件名称?

时间:2014-02-16 06:14:48

标签: c# asp.net-mvc

我有一个List<>对象,对于每个对象,我在表中创建一行:

@for(int cnt=0; cnt< Model.Transaction.TransactionLines.Count; cnt++)
{
    <div class="form-group">
    <label for="@("cmbCategory" + cnt.ToString())" class="col-lg-1 control-label">Category:</label>
    <div class="col-lg-3">
        @Html.DropDownListFor(x => x.Transaction.TransactionLines[cnt].CategoryId,
                                  new SelectList(Model.TransactionReferences.Categories, "Value", "Text", Model.Transaction.TransactionLines[cnt].CategoryId), "Select one",
                                  new { @onchange = "populateSubCategory(0)", @class = "cmbCategory0 form-control" })
    </div>

...

正如您所看到的,在代码中,我在标记中硬编码了“0”。我需要在“for”循环中反映Cntr变量的值。

即。 @onchange = "populateSubCategory(0)"

如何用@cntr替换0?

2 个答案:

答案 0 :(得分:2)

您可以简单地使用字符串连接:

new { @onchange = "populateSubCategory(" + cnt + ")", @class = "cmbCategory0 form-control" })

或使用string.Format()

new { @onchange = string.Format("populateSubCategory({0})", cnt), @class = "cmbCategory0 form-control" })

答案 1 :(得分:0)

我不是MVC的人,但为什么你不能连接字符串,

e.g。

new {“onchange = \”populateSubCategory(“,cnt.ToString(),”\“,class = \”cmbCategory“,cnt.ToString(),”form-control \“”})