c# – 如何在MVC中绑定TimeZoneInfo
发布时间:2020-12-16 01:57:51 所属栏目:百科 来源:网络整理
导读:我有以下类用于模型: public class ApplicationUser{ public int? UserId { get; set; } public TimeZoneInfo TimeZoneDefault { get; set; } public string Username { get; set; } [...]} 在视图中,我有以下代码成功创建下拉列表: @model Acme.Applicati
|
我有以下类用于模型:
public class ApplicationUser
{
public int? UserId { get; set; }
public TimeZoneInfo TimeZoneDefault { get; set; }
public string Username { get; set; }
[...]
}
在视图中,我有以下代码成功创建下拉列表: @model Acme.ApplicationUser
@{
var timeZoneList = TimeZoneInfo
.GetSystemTimeZones()
.Select(t => new SelectListItem
{
Text = t.DisplayName,Value = t.Id,Selected = Model != null && t.Id == Model.TimeZoneDefault.Id
});
}
在表单中调用它: <table>
[....]
<tr>
<td>
@Html.LabelFor(model => model.TimeZoneDefault,"Default Time Zone:")</strong> </td>
<td>
@Html.DropDownListFor(model => model.TimeZoneDefault,timeZoneList)
<input type="submit" value="Save" />
</td>
</tr>
</table>
一切都正确显示,问题又回到了控制器上,我有这个: [HttpPost]
public ActionResult Profile(ApplicationUser model)
{
if (ModelState.IsValid)
{
model.Save();
}
return View();
}
回发时ModelState无效,错误是:
如何将选定的值转换回TimeZoneInfo,我需要做什么? 解决方法
如果您不想使用自定义绑定器,可以使用此技巧:
// Model
public class test
{
public string TimeZoneId { get; set; }
public TimeZoneInfo TimeZone
{
get { return TimeZoneInfo.FindSystemTimeZoneById(TimeZoneId); }
set { TimeZoneId = value.Id; }
}
}
并在您的视图中绑定到TimeZoneId: @Html.DropDownListFor(m => m.TimeZoneId,timeZoneList) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
