MVC3查看For循环值初始化

时间:2012-06-19 15:09:39

标签: c# asp.net-mvc-3 razor viewmodel asp.net-mvc-views

所以我在我的View中有一个for循环,它应该渲染出输入框。现在在这些输入框中,我想要点击它们时点击它们消失的标签。这很简单。现在可能是因为我的大脑首先连接了php,并且很难让它在lambdas和面向对象中思考,但我无法弄清楚如何做到这一点:

@{ for (int i = 0; i < 3; i++)
               {
                   <div class="editor-label grid_2">User</div>
                   Model.Users[i].UserFirstName = "First Name";
                   Model.Users[i].UserLastName = "Last Name";
                   Model.Users[i].UserEmailAddress = "Email Address";
                <div class="grid_10">
                @Html.TextBoxFor(m => Model.Users[i].UserFirstName, new { @class = "user-input" })
                @Html.TextBoxFor(m => Model.Users[i].UserLastName, new { @class = "user-input" })
                @Html.TextBoxFor(m => Model.Users[i].UserEmailAddress, new { @class = "user-input-long" })
                @Html.CheckBoxFor(m => Model.Users[i].IsUserAdmin)
                <span>&nbsp;admin?</span>
                </div>
                <div class="clear">
                </div>
               }
            }

并初始化用户的值。

你可能正在考虑“当然这不起作用。你会得到一个空参考例外”,你就是对的。

我可能需要在其他地方初始化它们,但我没有意识到,但我只是不确定。我已经尝试了[DefaultValue(“First Name”)]路由,但这不起作用。

我可能正在考虑这个错误,但是我的大脑已经开始试图弄清楚如何将这些事件连接到控制器,所以任何帮助都会受到赞赏!

1 个答案:

答案 0 :(得分:3)

  

现在在这些输入框中,我想把点击它们时消失的标签

您可以使用HTML5 placeholder属性:

@Html.TextBoxFor(
    m => m.Users[i].UserFirstName, 
    new { @class = "user-input", placeholder = "First Name" }
)

对于不支持此属性的旧版浏览器,请使用javascript添加此功能。这是关于此主题的博客文章:http://davidwalsh.name/html5-placeholder

还有一些示例说明如何使用元数据直接在您的视图模型中实现此功能:https://stackoverflow.com/a/5824169/29407