2016-12-19 17 views
-1

以下は私がエラーを受けているupdateproduct.cshtmlファイルです。解決方法 "System.ArgumentException:値はnullまたは空ではありません。パラメータ名:contentPath"このエラー?

@modelのShopperDB.Context.Product

   @using (Html.BeginForm()) 
      { 
        @Html.AntiForgeryToken() 
        <div class="form-horizontal"> 
         <h2 class="admin-title text-center">Edit Product</h2> 
         <hr /> 
         @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
         @Html.HiddenFor(model => model.ProductID) 
         <div class="form-group"> 
          @Html.LabelFor(model => model.ProductName, htmlAttributes: new { @class = "control-label col-md-2" }) 
          <div class="col-md-6"> 
           @Html.EditorFor(model => model.ProductName, new { htmlAttributes = new { @class = "form-control" } }) 
           @Html.ValidationMessageFor(model => model.ProductName, "", new { @class = "text-danger" }) 
          </div> 
         </div> 
         <div class="form-group"> 
          @Html.LabelFor(model => model.ProductImage, htmlAttributes: new { @class = "control-label col-md-2" }) 
          <div class="col-md-6"> 
           <img src="@Url.Content(Model.ProductImage)" alt="IMAGES" height="300" ; width="300" /> 
          </div> 
         </div> 
         <div class="form-group"> 
          @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" }) 
          <div class="col-md-6"> 
           @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } }) 
           @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" }) 
          </div> 
         </div> 
         <div class="form-group"> 
          @Html.LabelFor(model => model.Price, htmlAttributes: new { @class = "control-label col-md-2" }) 
          <div class="col-md-6"> 
           @Html.EditorFor(model => model.Price, new { htmlAttributes = new { @class = "form-control" } }) 
           @Html.ValidationMessageFor(model => model.Price, "", new { @class = "text-danger" }) 
          </div> 
         </div> 

         <div class="form-group"> 
          @Html.LabelFor(model => model.CategoryID, "CategoryName", htmlAttributes: new { @class = "control-label col-md-2" }) 
          <div class="col-md-6"> 
           @Html.DropDownList("CategoryID", null, htmlAttributes: new { @class = "form-control" }) 

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


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

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

}

以下の製品コントローラから私の更新生成方法です。私は、製品を更新していながら

//Update the product 
     [HttpGet] 
     [Route("product/update/{id}")] 
     [CustomAuthorize("admin")] 
     public ActionResult UpdateTheProduct(int? id) 
     { 
      if (Session["UserName"].ToString() != null) 
      { 
       if (Session["UserName"].ToString() == "admin") 
       { 
        if (id == null) 
        { 
         return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
        } 
        Product product = db.Products.Find(id); 
        if (product == null) 
        { 
         return HttpNotFound(); 
        } 
        ViewBag.CategoryID = new SelectList(db.ProductCategories, "CategoryID", "CategoryName"); 
        return View(product); 
       } 
       else 
       { 
        return RedirectToAction("Index", "Home"); 
       } 
      } 
      else 
      { 
       return RedirectToAction("Index", "Home"); 
      } 
     } 
     [HttpPost] 
     [ValidateAntiForgeryToken] 
     [Route("product/update/{id}")] 
     [CustomAuthorize("admin")] 
     public ActionResult UpdateTheProduct([Bind(Include = "ProductID,ProductName,ProductImage,Description,Price,CategoryID")] Product product) 
     { 
      if (ModelState.IsValid) 
      { 
       if (db.Products.Any(ac => ac.ProductName.Equals(product.ProductName))) 
       { 
        TempData["fail"] = "Category already Added"; 
       } 
       else 
       { 
        TempData["notice"] = "Successfully Added"; 
        db.Entry(product).State = EntityState.Modified; 
        db.SaveChanges(); 

       } 
       return RedirectToAction("ListOfProducts"); 
      } 
      return View(product); 
     } 

それはProductImageポイントを保存するには、私にSystem.ArgumentException: Value cannot be null or empty.Parameter name: contentPathこのエラーを示しています。

このエラーを解決するのを手伝ってください。 Model.ProductImage値が代わりに表示する渡された相対パス文字列を含むのnullまたは空の

<img src="@Url.Content(Model.ProductImage)" alt="IMAGES" height="300" ; width="300" /> 

場合、それはUrl.Content方法以来contentPath例外がスローされます。

+0

コードが多すぎる - 関連性の高いものだけを表示する –

答えて

0

あなたのビューでのコードのこの部分では、潜在的にcontentPath例外をスローnullまたは空の引数を持つことはできません。

UpdateTheProductProductImageプロパティにnullまたは空の値に対してであれば、条件チェックを入れて、コンテンツURLの問題を、(アクションメソッド、またはそれらの両方をGETまたはPOSTのいずれか)を解決し、相対パスを使用して、そのデフォルト値を設定するには

if (String.IsNullOrEmpty(Model.ProductImage)) 
{ 
    Model.ProductImage = "~/path/imagefile"; 
} 

// some code 
return View(product); 

関連問題:

Value cannot be null or empty. Parameter name: contentPath

"Value cannot be null or empty. Parameter name: contentPath" on a most unexpected line on postback when ModelState has errors

関連する問題