مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

مشکل در ذخیره اطلاعات

جمعه, 14 دی 1397 17:08

مشکل در ذخیره اطلاعات

سلام دوستان خسته نباشین من یه پروژه دارم که ویوش رو با انگولار ۴ نوشتم و کد بک رو به صورت web api پاس میدم بهش . 

مشکلی که دارم ذخیره نشدن اطلاعاتم در بانکمه . دریافت اطلاعات از بانک و نمایش اونها در ویو درسته اما ذخیره اش مشکل دهره و خطای خاصی هم ندارم . 

اگه ممکنه کدم رو بررسی کنین . 

کد بک : 

 public interface ITitrRepo
    {
        bool Save(Titr titr);
    }

 public class TitrRepo : ITitrRepo
    {
        BarEntites db = new BarEntites();

        public bool Save(Titr titr)
        {
            try
            {

                db.Titr.Add(titr);
                db.SaveChanges();
                return true;
            }
            catch (Exception)
            {

                return false;
            }
        }
    }

مدل مورد نظر :

 public class Titr
    {
        [Key]
        public int ID { get; set; }

        [Display(Name = "شناسه کامپیوتری بار")]
        public int TitrID { get; set; }

        [Display(Name = "تاریخ ورود بار ")]
        public string InputDate { get; set; }

        [Display(Name = "شماره بارنامه")]
        public int BillOfLadingID { get; set; }

        [Display(Name = "شماره ماشین یک")]
        public int CarPlak1 { get; set; }

        [Display(Name = "شماره ماشین دو")]
        public int? CarPlak2 { get; set; }

        [Display(Name = "نام صاحب بار")]
        public int HolderID { get; set; }

        [Display(Name = "نوع محصول")]
        public int OrderID { get; set; }

        [Display(Name = "نوع بسته بندی")]
        public int PackingID { get; set; }


        [Display(Name = "پی باری , دستی")]
        public int Deposit { get; set; }

        [Display(Name = "تعداد بار")]
        public int NumOfProduct { get; set; }

        [Display(Name = "وزن بار در مقصد")]
        public int ProWeightInDes { get; set; }

        [Display(Name = "کرایه")]
        public int Frought { get; set; }

        [Display(Name = "هزینه تخلیه")]
        public int DischargePey { get; set; }

        [Display(Name = "هزینه متفرقه")]
        public int SundrisePey { get; set; }

        [Display(Name = "فی خرید")]
        public int PriceIndex { get; set; }

        [Display(Name = "مبلغ کل")]
        public int TotalPrice { get; set; }

        [Display(Name = "توضیحات")]
        public string Description { get; set; } = null;

کنترلر : 

 [HttpPut]
        public bool SavePro([FromBody]Titr titr)
        {
            return  _ITitrRepo.Save(titr);

        }

بخش ویو که با انگولار هستش به شکل زیر 

صفحه مورد نظر که داده هارو میخام از ش بگیرم و پاس بدم : 

<form method="POST" style="padding-top: 50px;">
  <h1>بارنامه جدید </h1>
<hr>
<div class="row">

    <div class="col-md-4">
        <label>شناسه کامپیوتری </label>
        <input type="number" class="form-control" name="titrID" [(ngModel)]="titr.TitrID">
    </div>

    <div class="col-md-4">
        <label >تاریخ ورود بار </label>
        <input type="text" class="form-control" name="InputDate" [(ngModel)]="titr.InputDate">
    </div>

    <div class="col-md-4">
        <label >شماره بارنامه  </label>
        <input type="number" class="form-control" name="BillOfLadingID" [(ngModel)]="titr.BillOfLadingID">
    </div>

</div>

<div class="row">

    <div class="col-md-4">
        <label>شماره ماشین  </label>
        <input type="text" class="form-control" name="CarPlak1" [(ngModel)]="titr.CarPlak1">
    </div>

    <div class="col-md-4">
        <label >شماره ماشین 2 </label>
        <input type="text" class="form-control" name="CarPlak2" [(ngModel)]="titr.CarPlak2">
    </div>

    <div class="col-md-4">
        <label >نام صاحب بار </label>
      <select  class="form-control" name="HolderID" [(ngModel)]="titr.HolderID">
            <option >انتخاب کنید</option>
            <option *ngFor="let item of Holder">
              {{item.ProName}}
            </option>
          </select>
    </div>

</div>

<div class="row">

    <div class="col-md-4">
        <label>نوع محصول </label>
       <select class="form-control" name="OrderID" [(ngModel)]="titr.OrderID">
          <option >انتخاب کنید</option>
            <option  *ngFor="let item of order">
              {{item.OrderName}}
            </option>

          </select>
    </div>

    <div class="col-md-4">
        <label >نوع بسته بندی</label>
        <select class="form-control" name="PackingID" [(ngModel)]="titr.PackingID">
            <option  >انتخاب کنید</option>
            <option *ngFor="let item of packing">
              {{item.PackingName}}
            </option>

          </select>
    </div>

    <div class="col-md-4">
        <label>پی باری , دستی </label>
        <input type="number" class="form-control" name="Deposit" [(ngModel)]="titr.Deposit">
    </div>



</div>


<div class="row">



    <div class="col-md-4">
        <label >تعداد بار </label>
        <input type="number" class="form-control" name="NumOfProduct" [(ngModel)]="titr.NumOfProduct">
    </div>

    <div class="col-md-4">
        <label >وزن بار در مقصد </label>
        <input type="number" class="form-control"  name="ProWeightInDes" [(ngModel)]="titr.ProWeightInDes">
    </div>


    <div class="col-md-4">
        <label>کرایه</label>
        <input type="number" class="form-control" name="Frought" [(ngModel)]="titr.Frought">
    </div>


</div>

<div class="row">


    <div class="col-md-4">
        <label >هزینه تخلیه </label>
        <input type="number" class="form-control" name="DischargePey" [(ngModel)]="titr.DischargePey">
    </div>

    <div class="col-md-4">
        <label >هزینه متفرقه </label>
        <input type="number" class="form-control" name="SundrisePey" [(ngModel)]="titr.SundrisePey">
    </div>

        <div class="col-md-4">
        <label>فی خرید </label>
        <input type="number" class="form-control" name="PriceIndex" [(ngModel)]="titr.PriceIndex">
    </div>

</div>

<div class="row">



    <div class="col-md-4">
        <label > مبلغ کل </label>
        <input type="number" class="form-control" name="TotalPrice" [(ngModel)]="titr.TotalPrice">
    </div>

</div>

<div class="row">
  <div class="col-md-12">
    <label > توضیحات </label>
    <textarea class="form-control" rows="3" name="Description" [(ngModel)]="titr.Description"></textarea>
</div>
</div>

<br>
<div class="row">
  <button class="btn btn-primary btn-lg" type="submit" (click)="Save();">ذخیره</button>
  <button class="btn btn-light btn-lg">لغو</button>

</div>




</form>

فایل ts مربوط به صفحم 

titr:Titr=new Titr();
      sas:Subscription;



    Save(){
      let self=this;
      this.sas=this.titrApi.save(this.titr).subscribe(
        (res) => {
          console.log(this.titr);
         }
      );
    }

همون مدل titr درون Angular

export class Titr {
  TitrID:Number;
  InputDate:string;
  BillOfLadingID:number;
  CarPlak1:number;
  CarPlak2:number;
  HolderID:number;
  OrderID:number;
  PackingID:number;
  Deposit:number;
  NumOfProduct:number;
  ProWeightInDes:number;
  Frought:number;
  DischargePey:number;
  SundrisePey:number;
  PriceIndex:number;
  TotalPrice:number;
  Description:string;
}

و این هم سرویسم درون انگولار 

  save(titrModel:Titr){
    let url="/api/Admin/SavePro/";
    return this.http.put(url , titrModel );
  }

شنبه, 15 دی 1397 07:28

یک breakpoint تنظیم کنید و کدهاتون خط به خط Debug کنید و مقادیر رو چک کنید. نحوه پیاده سازی Repository شما اشتباست و همچنین گذاشتن متد SaveChange داخل try catch کار درستی نیست.

شنبه, 15 دی 1397 07:51

سلام

والا من کدهای شما را نخوندم! اما چون تا مدت های زیادی خودم همین مشکل را داشتم و ان هم فقط برای ذخیره کردن اطلاعاتی که از سمت انگیولار به سمت سرور بود حدس می زنم شاید همان مشکل خود من باشد.

مشکل از Cross  Origin  می باشد. شما کنسول براوزر را باز کنید اگر چنین پیام خطایی بود تنها راهش این است که بالای api  خودتان این دستور را اضافه کنید

 [EnableCors(origins: "*", headers: "*", methods: "*")]

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید