在View中使用模型变量作为变量,将使用JavaScript填充

时间:2016-08-22 09:24:11

标签: javascript asp.net-mvc parameter-passing strongly-typed-view

如何在Model中使用变量而不将其用作输入字段?我在Model中有一个未使用的变量,即userId。我的JavaScript会根据点击的行填充View中的字段。我打算同时填充userId,以便我可以在“更新”按钮中使用它。如何将m => m.userId用作变量?

查看

@Html.LabelFor(m => m.userDesc)
@Html.TextBoxFor(m => m.userDesc)

@Html.LabelFor(m => m.userStatus)
Active @Html.RadioButtonFor(m => m.userStatus, true)
Inactive @Html.RadioButtonFor(m => m.userStatus, false)

模型

public string userId { get; set; }
[Required(ErrorMessage = "*")]

[Display(Name = "User")]
public string userDesc { get; set; }

[Display(Name = "Status")]
public string userStatus { get; set; }

JavaScript的一部分

//columnData - represents the column index in my table
//fieldId - id of the fields (e.g. text = userDesc, radio = userStatus)

for (i = 0; i < columnData.length; i++) {

    var elmntType = document.getElementById(fieldId[i]).getAttribute("type");

    if (elmntType == "text") {

        document.getElementById(fieldId[i]).value = rowSelected.cells[i].innerHTML.trim();

    } else if (elmntType == "radio") {

        var status = rowSelected.cells[i].innerHTML.trim();

        if(status == "Active") {
            $('input[name="' + fieldId[i] + '"][value="True"]').prop('checked', true);
        } else {
            $('input[name="' + fieldId[i] + '"][value="False"]').prop('checked', true);
        }
    }               
}

1 个答案:

答案 0 :(得分:0)

首先,您可以使用Model中包含的变量而不使用m => m.A表示法。 您可以在视图中的任何位置执行以下操作:<h1>Hi @Model.userDesc</h1>

现在,如果您想在JS代码中使用Model个变量,可以通过3种方式实现:

  1. 在您的视图中嵌入您的JS代码,以便您可以在任何地方使用@Model.userId
  2. 在.js文件中外部化并从您的视图中初始化JS代码@Model.userId
  3. 另外,如果您想从JS代码更新userId变量,则必须将其存储在隐藏字段中才能操作它。