10

エディターボックスにデフォルト値を設定して、ボックスに何も書き込まない場合に null 値を送信しないようにするにはどうすればよいですか。

 <div class="editor-label">
        @Html.Label("Description")
        </div>                                           // somthing like
       <div>@Html.EditorFor(model => model.Description, " Default value ")
        @Html.ValidationMessageFor(model => model.Description)
    </div>

または、次のように変更した場合:

 @Html.TextBoxFor(Model.somthing, "Default value")
4

4 に答える 4

21

フィールドにデフォルト値を表示するには、次の例のように、htmlAttributes で「Value」プロパティを割り当てる必要があります。

@Html.EditorFor(model => model.Description,  new { htmlAttributes = new { @class = "form-control", @Value = ViewBag.DefaultDescription } })

値の V が大文字であることを確認してください。

このようにして、モデルではなく html フィールドにデフォルト値を割り当てるだけです。

モデルにデフォルト値を割り当てると、最初にモデル オブジェクトを作成する必要があり、日時などの null 非許容フィールドのデフォルト値が設定され、ページに迷惑な 1/1/1001 00:00:00 値が表示されます。モデルの残りの部分にある可能性のある日時フィールド。

于 2014-12-03T16:20:20.603 に答える
2

使用する代わりに

 @Html.EditorFor(model => model.UserId) 

使用する

@Html.TextBoxFor(model => model.UserId, new { @Value = "Prabhat" })
于 2014-01-10T07:39:50.953 に答える
0

何かのプロパティに「デフォルト値」を持つようにモデルを定義するのはどうですか? その場合、特別なことをする必要はありません。これで満足できない場合 (たとえば、ユーザーに画面に「既定値」を表示させたくない場合)、このモデル用に DefaultModelBinder から継承するカスタム モデル バインダーを作成し、OnModelUpdated メソッドのみをオーバーライドすることができます。次の行に沿ったもの:

model.somthg = string.IsNullOrEmpty(model.somthing) ? "Default Value" : model.somthing

私の知る限り、EditorFor は送信したカスタム html 属性を無視することにも注意してください。

于 2013-05-15T10:13:04.227 に答える