我有一个使用 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; }
...
}
这是用于编辑的 Web 表单的片段:
<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与Bind("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) “接受”这两种格式?