2015-04-02 103 views
0

我遇到問題。我該如何解決它?從類型'System.String'到類型'BH.Models.Resim'的參數轉換失敗,因爲沒有類型轉換器可以在這些類型之間進行轉換

該錯誤消息,因爲這

從類型「System.String」的參數轉換爲類型「BH.Models.Resim」失敗,因爲沒有類型轉換器可以在這些類型之間的轉換。

控制器

public class HaberYonetimController : Controller 
{ 
    BhContext veritabani = new BhContext(); 

    // GET: Yonetim/HaberYonetim 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [ValidateInput(false)] 
    public ActionResult HaberEkle() 
    { 

     ViewBag.Kategori = new SelectList(veritabani.Kategoriler, "Id", "Adi"); 
     ViewBag.HaberTip = new SelectList(veritabani.HaberTipler, "Id", "Adi"); 
     ViewBag.Kullanici = new SelectList(veritabani.Kullanicilar, "Id", "KullaniciAd"); 

     return View(); 
    } 


    public string ResimKaydet(HttpPostedFileBase file) 
    { 
     Image orj = Image.FromStream(file.InputStream); 

     Bitmap kck = new Bitmap(orj, 150, 150); 
     Bitmap orta = new Bitmap(orj, 250, 250); 
     string dosyaadi = Path.GetFileNameWithoutExtension(file.FileName) + Guid.NewGuid() + Path.GetExtension(file.FileName); 

     orj.Save(Server.MapPath("~/Content/images/photos/buyuk/"+dosyaadi)); 
     orta.Save(Server.MapPath("~/Content/images/photos/orta/" +dosyaadi)); 
     kck.Save(Server.MapPath("~/Content/images/Photos/kucuk/"+dosyaadi)); 

     return dosyaadi; 


    } 








    [HttpPost] 
    [ValidateAntiForgeryToken] 
    [ValidateInput(false)] 
    public ActionResult HaberEkle(Haber haber, HttpPostedFileBase Resim) 
    { 
     if (ModelState.IsValid) 
     { 
      haber.Goruntulenme = 0; 
      haber.KullaniciID = 3; 

      string dosyaadi = ResimKaydet(Resim); 

      haber.KucukResimYol = "/Content/images/photos/kucuk/" + dosyaadi; 
      haber.ResimYol = "/Content/images/photos/buyuk/" + dosyaadi; 
      haber.OrtaResimYol = "/Content/images/photos/orta/" + dosyaadi; 

      haber.Aktif = true; 
      haber.YayimTarihi = DateTime.Now; 


      veritabani.Haberler.Add(haber); 
      veritabani.SaveChanges(); 

      return RedirectToAction("Ekle", "Kategori"); 

     } 
     else 
     { 
      return View(); 
     } 



    } 


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

視圖

@model BH.Models.Haber 

@{ 
    ViewBag.Title = "HaberEkle"; 
    Layout = "~/Areas/Yonetim/Views/Shared/_Admin.cshtml"; 
} 

<br /> 

<div class="panel panel-default "> 
    <div class="panel-heading"> 
     Haber Ekle 
    </div> 
    <div class="panel-body"> 

     @using (Html.BeginForm()) 
     { 
     @Html.AntiForgeryToken() 

     <div class="form-horizontal"> 

      @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
      <div class="form-group"> 
       @Html.LabelFor(model => model.Baslik, htmlAttributes: new { @class = "control-label col-md-2" }) 
       <div class="col-md-10"> 
        @Html.EditorFor(model => model.Baslik, new { htmlAttributes = new { @class = "form-control" } }) 
        @Html.ValidationMessageFor(model => model.Baslik, "", new { @class = "text-danger" }) 
       </div> 
      </div> 

      <div class="form-group"> 
       @Html.LabelFor(model => model.Ozet, htmlAttributes: new { @class = "control-label col-md-2" }) 
       <div class="col-md-10"> 
        @Html.EditorFor(model => model.Ozet, new { htmlAttributes = new { @class = "form-control" } }) 
        @Html.ValidationMessageFor(model => model.Ozet, "", new { @class = "text-danger" }) 
       </div> 
      </div> 

      <div class="form-group"> 
       @Html.LabelFor(model => model.Icerik, htmlAttributes: new { @class = "control-label col-md-2" }) 
       <div class="col-md-10"> 


        @Html.TextAreaFor(model => model.Icerik, new { @class = "ckeditor" }) 

        @Html.ValidationMessageFor(model => model.Icerik, "", new { @class = "text-danger" }) 
       </div> 
      </div> 

      <div class="form-group"> 
       @Html.Label("Resim", htmlAttributes: new { @class = "control-label col-md-2" }) 
       <div class="col-md-10"> 
        <input name="Resim" type="file" /> 

       </div> 
      </div> 







      <script src="~/Content/Admin/ckeditor2/ckeditor.js"></script> 



      <script> 
       // Replace the <textarea id="editor3"> with a CKEditor 
       // instance, using default configuration. 
       CKEDITOR.replace('editor3'); 
      </script> 



      <div class="form-group"> 
       <div class="col-md-offset-2 col-md-10"> 
        <input type="submit" value="Ekle" class="btn btn-default" /> 
       </div> 
      </div> 
     </div> 
     } 

    <div> 
     @Html.ActionLink("Back to List", "Index") 
    </div> 





    </div> 
</div> 








<script src="~/Scripts/jquery-1.10.2.min.js"></script> 
<script src="~/Scripts/jquery.validate.min.js"></script> 
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script> 

回答

0

確保您從您的控制器操作返回你的模型對象返回到您的視圖。

return View(model); 

在你的榜樣,我懷疑你的問題可能在這裏,當模型狀態無效:

[HttpPost] 
[ValidateAntiForgeryToken] 
[ValidateInput(false)] 
public ActionResult HaberEkle(Haber haber, HttpPostedFileBase Resim) 
{ 
    if (ModelState.IsValid) 
    { 
     haber.Goruntulenme = 0; 
     haber.KullaniciID = 3; 

     string dosyaadi = ResimKaydet(Resim); 

     haber.KucukResimYol = "/Content/images/photos/kucuk/" + dosyaadi; 
     haber.ResimYol = "/Content/images/photos/buyuk/" + dosyaadi; 
     haber.OrtaResimYol = "/Content/images/photos/orta/" + dosyaadi; 

     haber.Aktif = true; 
     haber.YayimTarihi = DateTime.Now; 


     veritabani.Haberler.Add(haber); 
     veritabani.SaveChanges(); 

     return RedirectToAction("Ekle", "Kategori"); 

    } 
    else 
    { 
     return View(haber); 
    } 
} 
+1

Resim具有價值,但有一個錯誤了。 http://i.hizliresim.com/oA1pAQ.png 錯誤消息: {「的參數轉換由類型‘System.String’爲類型‘BH.Models.Resim’失敗,因爲沒有類型轉換器可以轉換在這些類型之間。「} – 2015-04-02 15:01:00

相關問題