如何在数据库中写入当前日期?
我想将当前日期传入文本框,因为用户无法在此字段中输入值。这将写入数据库。我这样做,我不能在数据库中写入,因为表中的字段为空,这不记录。我怎样才能做到这一点?如何在数据库中写入当前日期?
@Html.TextBox("DATA_HORA", string.Format("{0:dd/MM/yyyy}", DateTime.Now), new { disabled = "disabled", @readonly = "readonly", Style = "width:100px;" })
谢谢大家。
- 编辑 -
我使用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);
}
}
}
布赖恩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) %>
你好琼。我很抱歉,但我在ASP.NET MVC中很新。我不太明白这个解决方案。 部分地说:“创建一个DateTime EditorTemplate(在Views \ Shared文件夹中添加一个名为EditorTemplates的文件夹),像这样:”我需要在Shared文件夹中创建一个新的类或新的视图? – 2013-03-25 17:10:53
是它只是一个Views/Shared/EditorTemplates中的新视图,通过继承到'System.Web.Mvc.ViewUserControl
对不起,我无法做到。我使用Razor引擎,对我来说很复杂。无论如何,感谢您的关注。 – 2013-03-25 18:12:56
如果你想设置一个日期上不应该改变的模式,那么你应该不使用文本字段。不仅没有理由在视图图层中传递信息,而且如果模型联编程序可以访问该字段,则可能会更改该信息。如果最终用户知道如何在浏览器中使用开发工具,即使隐藏,禁用或只读字段也可以修改。
在控制器刚刚成立日期:
[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将自动填入保存的当前日期和时间。
目前还不清楚这个UI元素如何与DB相关......你能澄清一下吗? – 2013-03-25 16:36:03
http://forums.asp.net/t/1665457.aspx – 2013-03-25 16:38:38
当然。我正在使用ADO.NET实体框架。创建控制器时会自动生成“创建”页面。 – 2013-03-25 16:41:38