如何摆脱mvc

时间:2019-01-22 10:11:12

标签: c# jquery asp.net-mvc

我的项目中有一个模块,在功能中,我有一个文本框,我在其中输入丢失的笔记并用按钮保存,但是保存数据的表中有一个外键,并且以下异常

我的代码如下

    public ActionResult SetBreakageNote(int id, string MissNote, int charge)
    {
        var Rdetail = new ReservationDetail();
        if (ModelState.IsValid)
        {
            Rdetail.ReservationID = id; 
            Rdetail.Description = MissNote;
            Rdetail.ChargeType = charge;
            db.Insert(Rdetail);
        }
        return RedirectToAction("Index");
    }

我的观点

@model IEnumerable<RoomTypeView>

<div class="row">
    @foreach (var item in Model)
    {
<div class="col-3">
<div class="row">
                        <div class="col-8">
                            <div class="inventory my-1">
                                <textarea class="form-control breakage" placeholder="Enter Breakage Note" rows="1"></textarea>
                            </div>
                        </div>
                        <div class="col-4">
                            <button type="button" class="btn btn-default breakage" data-brid="@item.ReservationID"><i class="fa fa-file-invoice" style="color:red;"></i></button>
                        </div>
                    </div>
        </div>
    }
</div>

  $('.breakage').click(function () {
            $.post("@Url.Action("SetBreakageNote", "HouseKeeping")", { id: $(this).data('brid'), MissNote: $('.breakage').val(), charge: @((int)ChargeTypeEnum.Breakage) });
        });

这是我得到的例外情况

  

INSERT语句与FOREIGN KEY约束“ FK_ReservationDetails_Reservation”冲突。数据库“ CavalaV3DB”的表“ dbo.Reservation”的列“ ReservationID

中发生了冲突

ReservationID是预留表的外键。

请帮助我

2 个答案:

答案 0 :(得分:0)

您正在尝试在Rdetail列的ReservationID中插入一些值。但是Reservation表中没有该值。 这违反了在Rdetail表中创建的外键约束。

您可以通过在将数据插入表中之前进行检查来避免这种情况

if (ModelState.IsValid)
        {
           if(db.Reservation.where(a=>a.ReservationId==id).Amy()) //Condition to check if data is there or not
          {
            Rdetail.ReservationID = id; 
            Rdetail.Description = MissNote;
            Rdetail.ChargeType = charge;
            db.Insert(Rdetail);
            }
        }

答案 1 :(得分:0)

在插入数据之前,foreign key字段中的值必须首先存在于另一个表中。您必须先构建包含Primary Key的表,然后才能在下拉列表中填充它们首先需要选择要保存的数据。

  

foreign key中处理other table's View的最好方法是将它们绑定到下拉列表中并设置必需的属性