1

したがって、入力ボックスをレンダリングすることになっているビューに for ループがあります。これらの入力ボックスの中に、クリックすると消えるラベルを入れたいと思います。これはすべて簡単です。これはおそらく、私の脳が最初に php に配線されたためであり、ラムダとオブジェクト指向で考えさせるのが困難でしたが、これを行う方法がわかりません。

@{ 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>
               }
            }

そして、ユーザーの値を初期化します。

そして、おそらく「もちろんうまくいかない。Null参照例外が発生するだろう」と考えているでしょうが、それは正しいでしょう。

他の場所でそれらを初期化する必要があるかもしれませんが、それはわかりませんが、よくわかりません。[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 に答える