我有一个LINQ to SQL实体类,其中包含一个名为sTime的可为空的int属性,我用它来记录为任务安排的秒数。例如数据库字段120000
我尝试向Task类添加一个属性,但是当我使用LINQ to SQL实体时,如何初始设置此属性。
public TimeSpan ScheduledTimeSpan {get; private set;}
int seconds = sTime ?? 0;
TimeSpan ts = new TimeSpan(0, 0, 0, seconds, 0);
ScheduledTimeSpan = ts;
我会在我的视图中执行此操作
<td><%= Html.Encode(task.ScheduledTimeSpan.TotalSeconds.ToString("hh:mm:ss")) %></td>
使用MVC时,我不确定在使用UpdateModel(任务)时如何以及在何处正确设置和获取sTime;在我的任务控制器中。我在想我需要在执行Get时在控制器操作中创建一个TimeSpan,但这对我来说似乎不对,我应该在哪里设置这个属性?有谁可以提供帮助?
答案 0 :(得分:1)
这就是我接近它的方式......
TaskClass的部分类
public partial class Task
{
public TimeSpan ScheduledTimeSpan
{
get
{
int seconds = sTime ?? 0;
return new TimeSpan(0, 0, seconds);
}
set
{
if (value != null)
sTime = (int)value.TotalSeconds;
}
}
}
然后将视图更改为
<p>
<label for="ScheduledTimeSpan">Scheduled Time:</label>
<%= Html.TextBox("ScheduledTimeSpan", Model.Task.ScheduledTimeSpan.ToString("hh:mm:ss"))%>
<%= Html.ValidationMessage("ScheduledTimeSpan", "*") %>
</p>
假设模型绑定器将“hh:mm:ss”字符串绑定到时间跨度没有问题,那么应该可以正常工作并且花花公子。
如果确实有问题,请告诉我。
HTHS, 查尔斯
答案 1 :(得分:0)
这是我视图中的输入文本框
<p>
<label for="sTime">sTime:</label>
<%= Html.TextBox("sTime", Model.Task.sTime)%>
<%= Html.ValidationMessage("sTime", "*") %>
</p>
这是我的.dbml designer.cs中的代码。
[Column(Storage="_sTime", DbType="Int")]
public System.Nullable<int> sTime
{
get
{
return this._sTime;
}
set
{
if ((this._sTime != value))
{
this.OnsTimeChanging(value);
this.SendPropertyChanging();
this._sTime = value;
this.SendPropertyChanged("sTime");
this.OnsTimeChanged();
}
}
}
以下是我的任务控制器中编辑操作的代码。
//
// GET: /Tasks/Edit/5
public ActionResult Edit(int id)
{
Task task = taskRepo.GetTask(id);
return View(new TaskViewModel(task));
}
//
// POST: /Tasks/Edit/5
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection collection)
{
Task task = taskRepo.GetTask(id);
try
{
UpdateModel(task);
taskRepo.Save();
return RedirectToAction("Details", new { id = task.taskId });
}
catch
{
ModelState.AddRuleViolations(task.GetRuleViolations());
return View(new TaskViewModel(task));
}
}
sTime是一个整数(以秒为单位的时间),当它进入数据库字段时需要是这个...但是该值的接口需要是一个HH:MM:SS的字符串。
这就是我尝试使用TimeSpan的原因,但是我不知道在哪里或如何设置它。
这会让它更清晰吗?