仅在外键对象的DateTime上显示日期

时间:2013-11-13 22:59:49

标签: .net asp.net-mvc asp.net-mvc-3 razor

我的RelationshipCodeLookup表使用AgentTransmission表的主键字段作为外键。 RelationshipCodeLookup表中只有5条记录具有相同的AgentTransmission主键。

为了对此进行编码,我只在RelationshipCodeLookup模型中创建了5个AgentTranmsission个对象。一切正常(创建/编辑/删除),但我不能让EffectiveDate只显示它的日期。

AgentTranmsission

namespace Monet.Models
{
  public partial class AgentTransmission
  {
    public RelationshipCodeLookup RelationshipCode1 { get; set; }
    public RelationshipCodeLookup RelationshipCode2 { get; set; }
    public RelationshipCodeLookup RelationshipCode3 { get; set; }
    public RelationshipCodeLookup RelationshipCode4 { get; set; }
    public RelationshipCodeLookup RelationshipCode5 { get; set; }

    public int ID { get; set; }
    public Nullable<System.DateTime> EffectiveDate { get; set; }
    public Nullable<System.DateTime> TerminationDate { get; set; }
    public string InactiveReasonCode { get; set; }
    public string RecordStatus { get; set; }
    public string EntityType { get; set; }
    public string ReferenceType { get; set; }
   }
}

RelationshipCodeLookup

namespace Monet.Models
{
    [MetadataType(typeof(RelationshipCodeLookupMetaData))]
    public partial class RelationshipCodeLookup1
    {
        public int Id { get; set; }
        public string RelationshipId { get; set; }
        public Nullable<System.DateTime> EffectiveDate { get; set; }
        public System.DateTime LastChangeDate { get; set; }
        public string LastChangeId { get; set; }
    }
    class RelationshipCodeLookupMetaData
    {
        [DisplayName("Effective Date")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
        public Nullable<System.DateTime> EffectiveDate { get; set; }        
    }
}

查看

    <tr>
        <td>@Html.EditorFor(model => model.RelationshipCode1.EffectiveDate, new { @class = "relCodeDate1" })</td>
        <td>@Html.TextBoxFor(model => model.RelationshipCode1.RelationshipId, new { @class = "relDistCode1", maxlength = 3 })</td>
    </tr>
    <tr>
        <td>@Html.EditorFor(model => model.RelationshipCode2.EffectiveDate, new { @class = "relCodeDate2" })</td>
        <td>@Html.TextBoxFor(model => model.RelationshipCode2.RelationshipId, new { @class = "relDistCode2", maxlength = 3 })</td>
    </tr>
    <tr>
        <td>@Html.EditorFor(model => model.RelationshipCode3.EffectiveDate, new { @class = "relCodeDate3" })</td>
        <td>@Html.TextBoxFor(model => model.RelationshipCode3.RelationshipId, new { @class = "relDistCode3", maxlength = 3 })</td>
    </tr>
    <tr>
        <td>@Html.EditorFor(model => model.RelationshipCode4.EffectiveDate, new { @class = "relCodeDate4" })</td>
        <td>@Html.TextBoxFor(model => model.RelationshipCode4.RelationshipId, new { @class = "relDistCode4", maxlength = 3 })</td>
    </tr>
    <tr>
        <td>@Html.EditorFor(model => model.RelationshipCode5.EffectiveDate, new { @class = "relCodeDate5" })</td>
        <td>@Html.TextBoxFor(model => model.RelationshipCode5.RelationshipId, new { @class = "relDistCode5", maxlength = 3 })</td>
    </tr>

屏幕截图

enter image description here

1 个答案:

答案 0 :(得分:3)

我会创建自己的编辑器模板,如下所示(Views / Shared / EditorTemplates):

@model DateTime?

@Html.TextBox("", (Model.HasValue ? Model.Value.ToString("MM/dd/yyyy") : string.Empty), new { @class = "form-control" })

然后像这样使用它:

@Html.EditorFor(m => m.EffectiveDate, "NullableDate")

所有这一切都会覆盖默认的.ToString()来电,为您提供完整的日期和时间。