我有一个使用EF 5的ASP.NET 4.5 Web表单站点。
我的数据模型的一个对象是带有DateTime属性的'医疗文件'(其中包括):
public partial class MedFile {
public System.Guid MedFileId { get; set; }
public string Name { get; set; }
public Nullable<System.DateTime> MedDate { get; set; }
...
}
这是用于编辑的网络表单的片段:
<asp:ListView ID="MedFilesForm" runat="server"
ItemType="MedFile" DataKeyNames="MedFileId"
SelectMethod="GetFiles"
UpdateMethod="UpdateFile">
...
<EditItemTemplate>
<asp:Label ID="Label1" runat="server" AssociatedControlID="TextBox1">Name</asp:Label>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Name") %>' />
<asp:Label ID="Label2" runat="server" AssociatedControlID="TextBox2">Data</asp:Label>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("MedDate", "{0:d}") %>' />
<asp:LinkButton ID="UpdateButton" runat="server"
CausesValidation="true" CommandName="Update"
</asp:LinkButton>
</EditItemTemplate>
</asp:ListView>
注意 UpdateMethod =“UpdateFile”和 TextBox2 与绑定(“MedDate”,“{0:d}”)
最后,这里是代码背后的UpdatedFile:
public void UpdateFile(Guid medFileId) {
// get the current med file from DB
MedFile medfile = _cartellaBLL.GetMedFileByFileId(medFileId);
// update it with values taken from the web form
TryUpdateModel(medfile);
// save the updated med file
if (ModelState.IsValid) {
_cartellaBLL.UpdateFile(medfile);
}
...
}
众所周知,上面的 TryUpdateModel(medfile)会自动神奇地验证,解析和转换Web表单中的字段,更新传递的medfile变量。
特别是,它根据可能在web.config文件中设置的应用程序文化的日期格式验证并转换TextBox2的值:
<globalization culture="it-IT" uiCulture="it-IT" />
我的问题是,我希望用户能够使用两种可能的格式之一来设置网络表单中的日期:默认文化之一,在我的情况下为dd / MM / yyyy(意大利)和国际yyyy-MM-dd(ISO 8601)。
是否可以指示 TryUpdateModel(TModel)“接受”这两种格式?