0

クラスを編集するためのページがあります。このページには、ページ上でクラスイベントを動的に追加および削除できるセクションがあります。私の問題は、このセクションで出てくるものの1つが日付です。時間ではなく、日付セクションだけを表示したいと思います。これがEntityFramework用に設定されたクラスです。

public class ClassEvent
{
    public ClassEvent()
    {
        EventDate = DateTime.Today;
    }
    [HiddenInput(DisplayValue = false)]
    public int ID { get; set; }

    public string Description { get; set; }

    [DataType(DataType.Date)]
    [Display(Name = "Date")]
    public DateTime? EventDate { get; set; }

    [HiddenInput(DisplayValue = false)]
    [Required(ErrorMessage = "Please select a class")]
    public int ClassID { get; set; }

    [Display(Name = "Class")]
    [ForeignKey("ClassID")]
    public virtual ScheduledClass ScheduledClass { get; set; }

    public Boolean Delete { get; set; }
}

私はこのコードを日時オブジェクトのエディターテンプレートとして持っています。

@inherits System.Web.Mvc.WebViewPage<System.DateTime?> 

@Html.TextBox("", String.Format("{0:d}", Model.HasValue ? Model.Value.ToString("MM/dd/yyyy") :""), new { @class = "datefield", style="width:100px"})

以下に示す実際のscheduledclassクラスに別のフィールドがあります

public class ScheduledClass
{
    public ScheduledClass()
    {
        Attendees = new List<ClassAttendee>();
    }

    [HiddenInput(DisplayValue = false)]
    public int ID { get; set; }

    [HiddenInput(DisplayValue = false)]
    [Required(ErrorMessage = "Please enter a topic")]
    public int ClassTopicID { get; set; }

    [Display(Name = "Topic")]
    public virtual ClassTopic ClassTopic { get; set; }

    [HiddenInput(DisplayValue = false)]
    public int ClassTypeID { get; set; }

    [Display(Name = "Class Type")]
    public virtual ClassType ClassType { get; set; }

    [Required]
    [DataType(DataType.Date)]
    [Display(Name = "Class Date")] 
    public DateTime ClassDate { get; set; }

    [Display(Name = "Attendees")] 
    public virtual ICollection<ClassAttendee> Attendees { get; set; }

    [Display(Name = "Events")]
    public virtual ICollection<ClassEvent> ClassEvents { get; set; }
}

エディターテンプレートは、ページが読み込まれたときにClassDateに対して正常に機能しますが、ページでボタンをクリックしてクラスイベントを追加すると、エディターテンプレートは作成されたものに適用されません。これがClassEvent自体のエディタテンプレートです

@model TRIOSoftware.Domain.Entities.ClassEvent

<tr class="ClassEvent">
<td>
    @Html.HiddenFor(model => model.ID)
    @Html.HiddenFor(model => model.ClassID )
    @Html.TextBoxFor(model => model.Description, new {style ="width:125px"})
    @Html.ValidationMessageFor(model => model.Description)
</td>
<td>    
    @Html.TextBoxFor(model => model.EventDate, new { @class = "datefield", style = "width:150px" })
    @Html.ValidationMessageFor(model => model.EventDate)
</td>
<td>
    @Html.HiddenFor(x => x.Delete, new { @class = "mark-for-delete" })
    @Html.LinkToRemoveNestedForm("Remove", "tr.ClassEvent", "input.mark-for-delete")
</td>
</tr>

誰かが以前にこの問題に遭遇したことがありますか?

4

1 に答える 1

0

問題は、TextBoxForを使用していて、EditorForを使用してエディターテンプレートを見つける必要があったことです。

于 2013-03-14T16:24:23.277 に答える