2

私はMVC4でいくつかの練習をしています。私の実践プロジェクトは、登録ユーザーと匿名ユーザーの両方がコメントを投稿できる単純な種類のコメント ボード/フォーラムです。

現在、登録済みのユーザーでも、小さな名前とメッセージのフォームを送信するときに、好きな名前を入力できるようにコードを設定しています。ログイン情報から取得したユーザー名を使用する代わりに、登録ユーザーに対してこの動作を無効にしたいと考えています。

理想的には、登録済みユーザーの名前ボックスには既にユーザー名が読み込まれており、編集できません。このユーザー名は、名前もメッセージも空でないことを確認する検証をフォームが通過するときに使用されます。

ビューからの私のコードは次のとおりです。

<div class="editor-label">
        @Html.LabelFor(x => x.comment.Name)
    </div>
    <div class="editor-field">
        @Html.ValidationMessageFor(x => x.comment.Name)
        <br />
        @if (User.Identity.Name=="") {
            @Html.EditorFor(x => x.comment.Name)
        } else {
            @Html.EditorFor(x => x.comment.Name, Model.PosterName)
        }
    </div>

Model.PosterName は、ユーザーのユーザー名を文字列として保持しているだけであることに注意してください。null または空ではありません。

Model.PosterName をデフォルトのオプションとして使用するように、2 番目の EditorFor 行を編集するにはどうすればよいですか? 編集不可能な動作の代わりに、おそらく DisplayFor を使用する必要がありますか?

上記のコードでは、EditorFor に値がまったく設定されていません。

ありがとう!

4

1 に答える 1

5

新しいコメントのビューに渡すモデルは、必要なcomment.Name値に設定されている必要があります。コントローラーでそれを行うことができます。コントローラーのコードを投稿していただければ、追加する必要がある正確なコードを提供できます。

ビューでこの入力フィールドを無効にする場合は、次のようにします。

@Html.TextBoxFor(x => x.comment.Name, new { @disabled = "disabled" } )

EditorForテキスト ボックスであることがわかっている場合は、使用する必要はありません。を使用TextBoxForすると、上記のように html 属性を指定できます。

于 2013-05-16T19:43:34.830 に答える