2017-01-17 12 views
1

部分的な表示に問題があります。初めてレンダリングされるときはすべて正常ですが、その後いくつかのデータが失われます。パーシャルビューデータに関する問題

は、これは私のページがどのように見えるべきかである:これは部分図が初めて

enter image description here

が、私は彼のサブカテゴリを確認するために、カテゴリをクリックしていたときに、画像がnullにレンダリングされるときでありますそれはもはや見えません。

@model IEnumerable<OnlineCarStore.Models.CategoriesVM> 

<div class="container"> 
<div class="row"> 
    @using (Html.BeginForm("SubCategories", "Product")) 
    { 
     <div class="list-group col-sm-3" style="width:280px;"> 
      @{var selected = string.Empty; 
       if (@HttpContext.Current.Session["selectedCar"] == null) 
       { 
        selected = string.Empty; 
       } 
       else 
       { 
        selected = @HttpContext.Current.Session["selectedCar"].ToString(); 
       } 

       foreach (var c in Model) 
       { 
        <a href="@Url.Action("SubCategories", "Product", new { selected = @selected, id = @c.ID, category = @c.CategoryName })" class="list-group-item"> 
         <span> @c.CategoryName</span> 
        </a> 
       } 
      } 
     </div> 

     <div class="col-sm-9"> 
      @foreach (var c in Model) 
      { 
      <div class="card-group" style="width:200px; display: inline-block"> 
       <div class="card card"> 
        <a href="@Url.Action("SubCategories", "Product", new { selected = @HttpContext.Current.Session["selectedCar"].ToString(), id = @c.ID, category = @c.CategoryName })" id="linkOnImg" class="card-group"> 
         <img class="card-img-top center-block" src="@string.Format("../content/images/categories/{0}.jpg", @c.AtpID)" [email protected] style="padding-top: 5px"> 
         <div class="card-text text-center"> 
          <p class="category-card-title "> 
           <span class="text-muted">@c.CategoryName</span> 
          </p> 

         </div> 
        </a> 
       </div> 
      </div> 
      } 
     </div> 
       } 
</div> 

これは部分図が二度目にレンダリングされるSubcategoris図である:これは私の部分図で

enter image description here

ある(名前だけが見える)

<div class="container"> 
<div class="row">  
    @Html.Partial("/Views/Home/CategorieTypes.cshtml"); 

ここはプロダクトコントローラですSubcategoリース方式:

public ActionResult SubCategories(string selected, int id, string category) 
    { 
     List<CategoriesVM> listOfCategories = new List<CategoriesVM>(); 

     var list = db.Categories.ToList(); 
     var root = list.GenerateTree(c => c.ID, c => c.ParentId).ToList(); 



     TreeItem<Categories> found = null; 
     var test = new TreeItem<Categories>(); 

     foreach (var rootNode in root) 
     { 
      found = TreeGenerator.Find(rootNode, (n) => n.Item.ID == id); 
      if (found != default(TreeItem<Categories>)) 
      { 
       test = found; 
       break; 
      }     
     } 

     foreach (var item in found.Children.ToList()) 
     { 
      CategoriesVM categoryv = new CategoriesVM(); 
      categoryv.ID = item.Item.ID; 
      categoryv.AtpID = item.Item.AtpID; 
      categoryv.Childrens = item.Children.ToList(); 
      categoryv.CategoryName = item.Item.AtpName;//.Name; 

      listOfCategories.Add(categoryv); 
     } 

     SiteMaps.Current.CurrentNode.Title = selected + " " + category; 

     var tests = found.Children.ToList(); 
     if (found.Children.ToList().Count == 0) 
     { 
      return View("Index"); 
     } 
     else 
     { 
      return View("SubCategories", listOfCategories); 
     }    
    } 

イメージのソースが正しいか、そしてそれは正しいですが、イメージがあったされていない場合、私は開発者向けのツールでチェックしました:

enter image description here

enter image description here

この問題で私を助けてもらえますか?私は間違っている?部分ビューの最初のレンダリング後に画像が表示されないのはなぜですか?前もって感謝します!

+0

あなたは、ブラウザの開発者ツールで画像のソースをチェックし、それが正しいかどうかを確認することはできますか? –

答えて

2

部分図のパスは/Views/Home/CategorieTypes.cshtmlであり、画像のパスは/Content/images/categoriesです。

部分ビューでは../content/images/categories/を画像のパスとして使用しています。つまり、無効なパス/Views/Content/Images/Categoriesを検索します。

srcプロパティの2つのドットを削除し、~を追加すると、
~/Content/Images/Categories/{img}のようになります。
または
のようにダウンしたディレクトリへの1つのレベルに行くために../ 1以上を追加します。
../../Content/Images/Categories/{img}

+0

ありがとうございました!それが問題でした。私は2つのドットを削除し、今それは働いています:)ありがとう – Orsi

+0

あなたは歓迎して、うれしいよ! – GeorgeChond