1

Entity Framework 4.1 を使用して ASP.Net MVC 3 Web アプリケーションを構築しています。ViewModel を受け入れるビューの 1 つで検証を実行するには。検証したいプロパティに配置したデータ注釈を使用しています。

ビューモデル

public class ViewModelShiftDate
{
    public int shiftDateID { get; set; }

    public int shiftID { get; set; }

    [DisplayName("Start Date")]
    [Required(ErrorMessage = "Please select a Shift Start Date/ Time")]
    public DateTime? shiftStartDate { get; set; }

    [DisplayName("Assigned Locum")]
    public int assignedLocumID { get; set; }

    public SelectList AssignedLocum { get; set; }

}

意見

@using (Html.BeginForm())
{
@Html.ValidationSummary(true)

    <br />
    <div class="editor-label">
        @Html.LabelFor(model => model.shiftStartDate)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.shiftStartDate, new { @readonly = "readonly" })
        @Html.ValidationMessageFor(model => model.shiftStartDate)
    </div>
    <br />

    <div class="editor-label">
        @Html.LabelFor(model => model.assignedLocumID)
    </div>
    <div class="editor-field">
        @Html.DropDownListFor(model => model.assignedLocumID, Model.AssignedLocum)
        @Html.ValidationMessageFor(model => model.assignedLocumID)
    </div>
    <br />

    <p>
        <input type="submit" value="Save" />
    </p>
    <br />
}

SelectList ' AssignedLocum ' が DropDownList のビューに渡され、選択された項目がプロパティ ' assignedLocumID ' に割り当てられます。

ViewModel からわかるように、唯一の必須フィールドは「shiftStartDate」ですが、ビューで送信ボタンを押すと、ドロップダウン リスト「AssignedLocum」も必須フィールドとして機能し、ユーザーが送信するまで許可しません。値が選択されます。

タグを付けていないにもかかわらず、このプロパティが必須フィールドとして機能している理由を誰かが知っていますか?

ありがとう。

4

1 に答える 1

-2

ドロップダウンのデフォルト値を使用してみてください (たとえば、「選択してください」)。

@Html.DropDownListFor(model => model.assignedLocumID, Model.AssignedLocum, "Please select")
于 2012-04-25T08:37:10.077 に答える