【问题标题】:MVC3 View For Loop values initializationMVC3 View For 循环值初始化
【发布时间】:2012-06-19 15:09:38
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    您可以使用 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

    【讨论】:

    • 谢谢,很好的回答!一个更简单的解决方案似乎总是跳起来咬我。我最终使用github.com/marcgg/Simple-Placeholder 来支持向后兼容的浏览器,因为它很简单而且我已经熟悉 jQuery。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    相关资源
    最近更新 更多