2014-02-08 53 views
-1

我試圖使用相同的視圖和控制器將數據添加到兩個不同的表。但我被卡住了。我是MVC的新手,請讓我知道我錯了什麼.Dto Model,Controller,Facade,Servicei,View和Entity Model如下。 我得到這個錯誤使用相同的視圖和控制器將數據添加到不同的兩個表

傳遞到字典的模型產品類型「LibOrganizerEntity.Entity.OrgProje」的,但這種字典需要類型的模型項目「LibOrganizerSvc.Dto.ProjeEkleDto」。

實體模型

[Table("KAR_PROJE")] 
public class OrgProje 
{ 
    [Key, Required] 
    [Column("SIRA_NO")] 
    public int ID { get; set; } 

    [Column("ACIKLAMA")] 
    public string Aciklama { get; set; } 

    [Column("PLANLANAN_BASLANGIC_TARIHI")] 
    public DateTime? PlanlananBaslangicTarihi { get; set; } 

    [Column("PLANLANAN_BITIS_TARIHI")] 
    public DateTime? PlanlananBitisTarihi { get; set; } 

    [Column("GERCEKLESEN_BASLANGIC_TARIHI")] 
    public DateTime? GerceklesenBaslangicTarihi { get; set; } 

    [Column("GERCEKLESEN_BITIS_TARIHI")] 
    public DateTime? GerceklesenBitisTarihi { get; set; } 

    [Column("SILINME_TARIHI")] 
    public DateTime? SilinmeTarihi { get; set; } 

    [Column("YONETICI_ID")] 
    public int? YoneticiId { get; set; } 

    [ForeignKey("YoneticiId")] 

    public virtual OrgPersonel OrgPersonel { get; set; } 
    public virtual OrgProjeButce OrgProjeButce { get; set; } 
    public virtual OrgButce Butce { get; set; } 

} 

[Table("KAR_PROJE_BUTCE")] 
public class OrgProjeButce 
{ 
    [Key, Required] 
    [Column("ID")] 
    public int ID { get; set; } 

    [Column("BUTCE_ID")] 
    public int ButceId { get; set; } 

    [Column("BUTCE_TUTAR")] 
    public float ButceTutar { get; set; } 

    [Column("GERCEKLESEN")] 
    public float? Gerceklesen { get; set; } 

    [ForeignKey("ButceId")] 
    public virtual OrgButce OrgButce { get; set; } 


} 

DTO模型

public class ProjeEkleDto 
{ 

    public string Aciklama { get; set; } 
    public DateTime? PlanlananBaslangicTarihi { get; set; } 
    public DateTime? PlanlananBitisTarihi { get; set; } 
    public DateTime? GerceklesenBaslangicTarihi { get; set; } 
    public DateTime? GerceklesenBitisTarihi { get; set; } 
    public DateTime? SilinmeTarihi { get; set; } 
    public string YoneticiAdi { get; set; } 
    public string YoneticiSoyadi { get; set; } 
    public string YoneticiId { get; set; } 
    public int ButceId { get; set; } 
    public string ButceAdi { get; set; } 
    public float ProjeButceTutari { get; set; } 
    public virtual IEnumerable<OrgPersonel> Proje { get; set; } 
    public virtual IEnumerable<OrgProjeButce> Butce { get; set; } 
} 

控制器

public ActionResult ProjeEkle() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult ProjeEkle(OrgProje model) 
    { 
     try 
     { 

      svc.ProjeEkle(model); 

      return RedirectToAction("Index", "Home"); 
     } 
     catch(Exception ex) 
     { 

     } 

     return View(model); 
    } 

服務

public void ProjeEkle(OrgProje proje) 
    { 
     var dto = new ProjeFacade(db); 
     dto.ProjeEkle(proje); 
    } 

門面

public void ProjeEkle(OrgProje proje) 
    { 
     db.OrgProjeler.Add(proje); 
     db.SaveChanges(); 
    } 

查看

@model LibOrganizerSvc.Dto.ProjeEkleDto 
@{ 
ViewBag.Title = "ProjeEkle"; 
Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
@using (Html.BeginForm()) 
{ 


<div class="row"> 
    <div class="col-sm-12"> 
     <div class="panel panel-default"> 
      <div class="panel-heading"> 
       <h4 class="panel-title">Proje Ekle</h4> 
      </div> 
      <div class="panel-body"> 
       <div class="row"> 
        <div class="col-sm-6"> 

         <h4 class="heading_a">Proje Detayları</h4> 

         <div class="form-group" style="width: 47%; float: left"> 
          <label for="reg_input">Proje Adı</label> 
          <input type="text" id="@Html.IdFor(x => x.Aciklama)" class="form-control"> 
         </div> 
         <div class="form-group" style="width: 47%; float: right;"> 
          <label for="reg_input">Proje Yöneticisi</label> 
          <select id="@Html.IdFor(x => x.YoneticiId)" name="chn_country" class="form-control"> 
           @Html.Action("_PersonelleriGetir", "Ortak") 
          </select> 
         </div> 
         <div class="form-group" style="width: 47%; float: right;"> 
          <label for="reg_input">Proje Bütçe Türleri</label> 

          <select id="@Html.IdFor(x => x.ButceAdi)" name="@Html.IdFor(x => x.ButceAdi)" class="form-control"> 
           @Html.Action("_ButceleriGetir", "Ortak") 
          </select> 
         </div> 
         <div class="col-sm-6" style="padding-left: 0;"> 
          <label for="reg_input">Proje Bütçesi</label> 
          <input type="text" id="@Html.IdFor(x => x.ProjeButceTutari)" class="form-control" name="@Html.IdFor(x => x.ProjeButceTutari)"> 
          <span class="help-block">2000 &#x20BA;</span> 
         </div> 
        </div> 
        <div class="col-sm-6"> 
         <h4 class="heading_a">Proje Zaman Ayarları</h4> 
        </div> 
        <div class="col-sm-3"> 

         <label for="reg_input">Planlanan Başlama Tarihi</label> 
         <div class="input-group date ebro_datepicker" data-date-format="dd-mm-yyyy" data-date-autoclose="true"> 
          <input class="form-control" type="text" id="@Html.IdFor(x => x.PlanlananBaslangicTarihi)"> 
          <span class="input-group-addon"><i class="icon-calendar"></i></span> 
         </div> 
        </div> 
        <div class="col-sm-3"> 

         <label for="reg_input">Planlanan Bitiş Tarihi</label> 
         <div class="input-group date ebro_datepicker" data-date-format="dd-mm-yyyy" data-date-autoclose="true"> 
          <input class="form-control" type="text" id="@Html.IdFor(x => x.PlanlananBitisTarihi)"> 
          <span class="input-group-addon"><i class="icon-calendar"></i></span> 
         </div> 
        </div> 
        <div class="col-sm-3"> 

         <label for="reg_input" style="margin-top: 15px;">Gerçekleşen Başlama Tarihi</label> 
         <div class="input-group date ebro_datepicker" data-date-format="dd-mm-yyyy" data-date-autoclose="true"> 
          <input class="form-control" type="text" id="@Html.IdFor(x => x.GerceklesenBaslangicTarihi)"> 
          <span class="input-group-addon"><i class="icon-calendar"></i></span> 
         </div> 
        </div> 
        <div class="col-sm-3"> 

         <label for="reg_input" style="margin-top: 15px;">Gerçekleşen Bitiş Tarihi</label> 
         <div class="input-group date ebro_datepicker" data-date-format="dd-mm-yyyy" data-date-autoclose="true"> 
          <input class="form-control" type="text" id="@Html.IdFor(x => x.GerceklesenBitisTarihi)"> 
          <span class="input-group-addon"><i class="icon-calendar"></i></span> 
         </div> 

        </div> 
        <div style="float: left; margin-top: 20px; width: 90%; position: relative; left: 15px;"> 
         <input type="submit" class="btn btn-default btn-lg" value="Kaydet" /> 
        </div> 

       </div> 
      </div> 
     </div> 
    </div> 
</div> 

}

回答

0

作爲錯誤消息表示,要傳遞一個類OrgProje類型的至需要ProjeEkleDto類型的視圖的視圖。

[HttpPost] 
public ActionResult ProjeEkle(OrgProje model) 
{ 
    try 
    { 
     svc.ProjeEkle(model); 
     return RedirectToAction("Index", "Home"); 
    } 
    catch(Exception ex) 
    { 

    } 

    return View(model); // Passing a view model of the wrong type to the view 
} 

要麼通過ProjeEkleDto類型的視圖模型回視圖,而不是你的OrgProje類型的模型,或者創建一個接受的視圖模型有不同的看法:在這次行動方法發生

你的錯誤鍵入OrgProje

+0

是的,你是對的,但在這個控制器上還有一個問題。 (OrgProje模型)在我發佈表單後從視圖中對控制器是comin null。所以這個方法只運行catch和返回View(模型)部分。 – OwnurD

+0

我解決問題時感覺不好。我忘了給輸入添加名稱屬性。但你是對的HTX9謝謝。 – OwnurD

0

在你看來變化 -

@model LibOrganizerSvc.Dto.ProjeEkleDto 

@model NameSpace.ProjeEkleDto 

我不知道將要使用哪個命名空間,但是使用適當的更換NameSpace

+0

NameSpace是「LibOrganizerSvc.Dto」 – OwnurD

相關問題