1

所以我的视图中有一个 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")] 路线,但它不起作用。

我可能在想这个错误,但我的大脑已经因为试图弄清楚如何将这些事件连接到控制器而被击中,所以任何帮助将不胜感激!

4

1 回答 1

3

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

您可以使用 HTML5placeholder属性:

@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

于 2012-06-19T15:12:57.323 回答