mvc控制器类通过用户点击按钮自动向模型中添加新数据
本文关键字:添加 模型 新数据 数据 控制器 用户 按钮 mvc | 更新日期: 2023-09-27 18:28:50
我正在尝试用asp编写一个类。NET MVC 5,当用户单击视图上的按钮时,它会自动将数据添加到我的模型中。具体来说,数据是数据库的一列中的日期戳和另一列的时间戳。例如,数据库看起来很像这个
Day TimeIn TimeOut
我有两个按钮,"打卡"answers"打卡"。第一个需要能够插入Day和TimeIn列,而ClockOut将根据数据库检查当前日期并添加用户的当前时钟。这是我迄今为止在控制器中拥有的类
// Post: Amember1/ClockInOut/ClockIn
[HttpPost, ActionName("ClockIn")]
public ActionResult ClockInConfirm()
{
string today = DateTime.Now.ToShortDateString();
db.TimeClock.SqlQuery("INSERT INTO TimeClock(Day) VALUES [today]");
db.SaveChanges();
return RedirectToAction("Index");
}
这是的视图
@model IEnumerable<AteamR2.Models.Amember1>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Day)
</th>
<th>
@Html.DisplayNameFor(model => model.TimeIn)
</th>
<th>
@Html.DisplayNameFor(model => model.TimeOut)
</th>
<th></th>
</tr>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Day)
</td>
<td>
@Html.DisplayFor(modelItem => item.TimeIn)
</td>
<td>
@Html.DisplayFor(modelItem => item.TimeOut)
</td>
<td>
<div class="ClockIn">
<input type="submit" value="ClockIn" class="buttonIn" />
</div>
<div class="ClockOut">
<input type="submit" value="ClockOut" class="buttonIn" />
</div>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
}
</table>
我真的不确定我的问题在哪里,但我相信这应该是
问题在于运行sql查询的方式。
最佳实践是使用SqlParameter:
string day = DateTime.Now.ToShortDateString();
string time = DateTime.Now.ToShortTimeString();
string test = "insert into timeclock(day, time) values (@p1, @p2)";
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@p1", day));
parameters.Add(new SqlParameter("@p2", time));
db.Database.ExecuteSqlCommand(test, parameters.ToArray());
更好的方法是让EF为您构造SQL查询:
db.TimeClock.Add(new TimeClock() { Day = day, Time = time });
db.SaveChanges();