You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.Net Framework MVC数据库无法写入baslangic等字段数据问题求助

解决ASP.NET MVC表单字段无法写入数据库的问题

问题核心很明确:你的控制器方法完全没处理视图里提交的baslangic、bitis、kisi_sayisi字段,只接收了hotelid和customerid,自然不会把这些值写入数据库。以下是两种可行的解决方法:

方法1:直接添加对应参数并赋值

修改控制器的ConfirmHotelReservation方法,把表单里的字段作为参数接收,然后手动赋值给 reservation 对象:

[HttpPost]
public ActionResult ConfirmHotelReservation(int? hotelid, int? customerid, DateTime baslangic, DateTime bitis, int kisi_sayisi)
{
    TBLHOTELREZERVASYON reservation = new TBLHOTELREZERVASYON();
    reservation.hotel = hotelid;
    reservation.musteri = customerid;
    // 新增这三行,把表单提交的字段赋值给实体
    reservation.baslangic = baslangic;
    reservation.bitis = bitis;
    reservation.kisi_sayisi = kisi_sayisi;
    
    db.TBLHOTELREZERVASYON.Add(reservation);
    db.SaveChanges();
    return RedirectToAction("Index");
}

方法2:使用模型绑定(推荐,符合MVC最佳实践)

如果你的TBLHOTELREZERVASYON实体已经包含baslangic、bitis、kisi_sayisi这三个属性,可以直接把实体作为控制器方法的参数,MVC会自动帮你绑定表单提交的值:

[HttpPost]
public ActionResult ConfirmHotelReservation(TBLHOTELREZERVASYON reservation, int? hotelid, int? customerid)
{
    // 补充从路由/会话传入的hotel和customer ID
    reservation.hotel = hotelid;
    reservation.musteri = customerid;
    
    // 可选:验证表单输入的合法性,比如日期不能乱填
    if (ModelState.IsValid)
    {
        db.TBLHOTELREZERVASYON.Add(reservation);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    
    // 如果验证失败,返回原视图并保留用户已输入的内容
    // 注意这里要重新填充下拉列表的ViewBag数据,否则下拉框会空
    ViewBag.person = // 这里写你之前填充下拉列表的代码,比如从数据库获取选项
    return View(reservation);
}

额外注意事项

  1. 确保TBLHOTELREZERVASYON实体的属性名称和视图里TextBoxFor/DropDownListFor绑定的名称完全一致(大小写敏感),比如视图里的x => x.baslangic必须对应实体里的baslangic属性。
  2. 如果日期字段绑定有问题,可以在视图里给TextBoxFor添加日期类型属性:new { @class = "form-control", @required = "required", type = "date" },确保浏览器提交标准的日期格式。

内容的提问来源于stack exchange,提问作者Ömer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:54:18