如何在数据库中写入当前日期
本文关键字:当前日期 数据库 | 更新日期: 2023-09-27 18:05:52
我试图将当前日期传递到文本框中,因为用户无法在此字段中输入值。这将写入数据库。这样,我就不能在DB上写,因为表中的字段是NULLABLE,这不会记录。我该怎么做呢?
@Html.TextBox("DATA_HORA", string.Format("{0:dd/MM/yyyy}", DateTime.Now), new { disabled = "disabled", @readonly = "readonly", Style = "width:100px;" })
谢谢大家。
—EDIT—
我正在使用ADO。. NET实体框架。"创建"页面是在我创建控制器时自动生成的。
—EDIT 2—
我的控制器:
namespace enChamados.Controllers
{
public class ChamadosController : Controller
{
private enChamados_ModeloContainer db = new enChamados_ModeloContainer();
//
// GET: /Chamados/
public ViewResult Index()
{
return View(db.CHAMADOS.ToList());
}
//
// GET: /Chamados/Details/5
public ViewResult Details(int? id)
{
CHAMADOS chamados = db.CHAMADOS.Find(id);
return View(chamados);
}
//
// GET: /Chamados/Create
public ActionResult Create()
{
return View();
}
//
// POST: /Chamados/Create
[HttpPost]
public ActionResult Create(CHAMADOS chamados)
{
if (ModelState.IsValid)
{
db.CHAMADOS.Add(chamados);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(chamados);
}
//
// GET: /Chamados/Edit/5
public ActionResult Edit(int? id)
{
CHAMADOS chamados = db.CHAMADOS.Find(id);
return View();
}
//
// POST: /Chamados/Edit/5
[HttpPost]
public ActionResult Edit(CHAMADOS chamados)
{
if (ModelState.IsValid)
{
db.Entry(chamados).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View();
}
//
// GET: /Chamados/Delete/5
public ActionResult Delete(int? id)
{
CHAMADOS chamados = db.CHAMADOS.Find(id);
return View(chamados);
}
//
// POST: /Chamados/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
CHAMADOS chamados = db.CHAMADOS.Find(id);
db.CHAMADOS.Remove(chamados);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
}
正如Brian p回答的那样,你可以为这个字段创建一个html编辑器
创建一个DateTime EditorTemplate(在Views'Shared文件夹中添加一个名为EditorTemplates的文件夹),如下所示:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Nullable<System.DateTime>>" %>
<% if ( Model.HasValue )
{ %>
<%: Html.TextBox( "" , String.Format( "{0:ddd, MMM d, yyyy}" , Model.Value ) )%>
<% }
else
{ %>
<%: Html.TextBox( "" , String.Format( "{0:ddd, MMM d, yyyy}" , DateTime.Now ) )%>
<% } %>
在您的视图中使用
<%: Html.EditorFor(model => model.nameOfYourField) %>
如果您想在模型上设置一个不应该更改的日期,那么您应该不使用文本字段。不仅没有理由在视图层中传递信息,而且如果模型绑定器访问该字段,它可能会被更改。如果最终用户知道如何在浏览器中使用开发工具,那么即使是隐藏的、禁用的或只读的字段也可以被修改。
在控制器中设置日期:
[HttpPost]
public ActionResult Create(CHAMADOS chamados)
{
if (ModelState.IsValid)
{
chamados.CreatedDate = DateTime.Now;
db.CHAMADOS.Add(chamados);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(chamados);
}
或者像这样你需要设置一个默认值的东西,通常在你的模型中设置它会更容易:
private DateTime? createdDate = null;
public DateTime CreatedDate
{
get { return createdDate ?? DateTime.Now; }
set { createdDate = value; }
}
然后,你不需要在控制器中做任何事情。当保存时,CreatedDate将自动使用当前日期和时间填充。