在视图中,我只需要修改datetime类型的字段的时间部分。 我不确定这是如何工作的。一种方法可能是传递提示,但不确定如何实现。
感谢
答案 0 :(得分:4)
你的问题不是很清楚你想做什么,但从我收集的内容我想你想要显示日期并只编辑时间。在这种情况下,可以像这样完成:
在你的模特中:
public class FooModel
{
public string Date { get; set; }
public string Time { get; set; }
}
在您的控制器中:
public class FooController
{
[HttpGet]
public ActionResult Foo()
{
var dateTime = DateTime.Now();
var model = new Foo
{
Date = dateTime.ToShortDateString(),
Time = dateTime.ToShortTimeString()
};
return View(model);
}
[HttpPost]
public ActionResult Foo(FooModel model)
{
DateTime updatedDateTime;
var dateTime = string.Format("{0} {1}", model.Date, model.Time);
var isValid = DateTime.TryParse(dateTime, out updatedDateTime);
if (!isValid)
{
ModelState.AddModelError("Time", "Please enter a valid Time.");
return View(model);
}
// process updates
return View("Success");
}
}
在您看来:
@model FooModel
@using (Html.BeginForm()) {
@Html.ValidationMessage("Time")
Date: @Html.DisplayFor(m => m.Date) <br />
Time: @Html.EditorFor(m => m.Time)
<p>
<input type="submit" value="Save" />
</p>
}
答案 1 :(得分:0)
您可以使用ToString
方法更改格式。 HERE是所有不同格式选项的列表。仅限时间,请跳至标题为“The”f“自定义格式说明符”
Console.WriteLine(TimeFld.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
在您的MVC视图中,您可以
@TimeFld.ToString("hh:mm:ss.f", ci);
答案 2 :(得分:0)
另外,here is a list of standard format options。
或者,你可以roll your own。
在剃刀中:
@Foo.ToString("MMMM dd, yyyy")
将返回(今天),
2011年11月8日
答案 3 :(得分:0)
在.NET中,不能仅更改DateTime
字段的时间部分,因为DateTime
是不可变的结构。这是来自MSDN,"Working with DateTime Members":
使用DateTime结构时,请注意DateTime类型是不可变的值。因此,DateTime.AddDays等方法检索新的DateTime值而不是递增现有值。以下示例说明如何使用语句dt = dt.AddDays(1)将DateTime类型增加一天。
public static void Main()
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
DateTime dt = DateTime.Now;
Console.WriteLine("Today is {0}", DateTime.Now.ToString("d"));
// Increments dt by one day.
dt = dt.AddDays(1);
Console.WriteLine("Tomorrow is {0}", dt.ToString("d"));
}
如您所见,唯一有效的方法是为DateTime
字段分配新值。 DateTime
类型支持时间操作方法AddHours
, AddMinutes
, AddSeconds
and AddMilliseconds
。但是,这些方法仅返回新DateTime
值,因此您必须将View Model上的属性设置为新值,以使其显示在视图中。
您可能还想查看此帖子:How to change time in datetime?。 (Jon Skeet回答)。