【发布时间】:2019-05-15 13:54:12
【问题描述】:
我的项目是一个 ASP.Net MVC 项目。在 JavaScript 中,我有一个 ISO 8601 字符串,例如 "PT15M"。如何定义我的模型以使其正确序列化为 TimeSpan 对象?
这是我的 Javascript:
var model = new TemplateMapModel();
model.DelayBy = "PT15M";
if (PerformClientSideValidation(model)) {
$.ajax({
type: 'POST',
url: '/api/TemplateMap',
data: { templateMap: model, files: files },
success: function (result) {
$('#modalTemplateMap').modal('toggle');
},
error: function (xhr, textStatus, e) {
var error = xhr.responseJSON.Message;
ShowMessageBox("Error", error);
ToggleBusyIndicator(false);
},
complete: function (xhr, textStatus) {
TEMPLATEMAPPING.grid.reload();
}
});
}
我在我的模型中试过这个:
public TimeSpan DelayBy { get; set; }
这样做会产生一个空值。我也试过这个:
public string DelayBy { get; set; }
这会起作用,然后我可以使用XmlConvert.ToTimeSpan() 来获得我想要的东西,但是,我不希望这样做,因为它似乎不是正确的方法,必须将我的 DelayBy 声明为字符串,然后在我的业务逻辑中转换它。我想使用这个定义:
public TimeSpan DelayBy { get; set; }
并让 MVC 自动将其转换为 TimeSpan 对象。有什么想法吗?
【问题讨论】:
-
重写
setter不适合你吗? -
@AntihypeBird - 我可以这样做,但是我必须使用
string而不是TimeSpan。我试图坚持只使用TimeSpan。 -
你能展示/解释你是如何设置这个值的吗?
-
@AntihypeBird - 我添加了我的 Javascript 代码。
标签: javascript c# asp.net-mvc model