部分视图数据的问题
Problems with partialview data
我的局部视图有问题。第一次渲染时一切正常,但之后一些数据丢失了。
我的页面应该是这样的:这是第一次呈现局部视图时的样子
但是当我点击一个类别来检查他的子类别时,图像是空的,它不再可见。 (只有名字可见)
这是我的部分观点:
@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)" alt=@c.CategoryName 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>
这是子类别视图,其中第二次呈现局部视图:
<div class="container">
<div class="row">
@Html.Partial("/Views/Home/CategorieTypes.cshtml");
这里是 Product controller Subcategories 方法:
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);
}
}
我已经在开发者工具中检查了图片来源是否正确,虽然正确,但没有显示图片:
你能帮我解决这个问题吗?我做错了什么?为什么在局部视图的第一次渲染后图像不出现?提前致谢!
局部视图的路径为/Views/Home/CategorieTypes.cshtml
,图像的路径为/Content/images/categories
。
在部分视图中,您使用 ../content/images/categories/
作为图像的路径,这意味着它将搜索无效的路径 /Views/Content/Images/Categories
。
删除 src
属性 中的两个点并添加一个 ~
这样它就会像:
~/Content/Images/Categories/{img}
。
或
再添加一个 ../
以便向下进入一级目录,例如:
../../Content/Images/Categories/{img}
我的局部视图有问题。第一次渲染时一切正常,但之后一些数据丢失了。
我的页面应该是这样的:这是第一次呈现局部视图时的样子
但是当我点击一个类别来检查他的子类别时,图像是空的,它不再可见。 (只有名字可见)
这是我的部分观点:
@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)" alt=@c.CategoryName 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>
这是子类别视图,其中第二次呈现局部视图:
<div class="container">
<div class="row">
@Html.Partial("/Views/Home/CategorieTypes.cshtml");
这里是 Product controller Subcategories 方法:
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);
}
}
我已经在开发者工具中检查了图片来源是否正确,虽然正确,但没有显示图片:
你能帮我解决这个问题吗?我做错了什么?为什么在局部视图的第一次渲染后图像不出现?提前致谢!
局部视图的路径为/Views/Home/CategorieTypes.cshtml
,图像的路径为/Content/images/categories
。
在部分视图中,您使用 ../content/images/categories/
作为图像的路径,这意味着它将搜索无效的路径 /Views/Content/Images/Categories
。
删除 src
属性 中的两个点并添加一个 ~
这样它就会像:~/Content/Images/Categories/{img}
。
或
再添加一个 ../
以便向下进入一级目录,例如:
../../Content/Images/Categories/{img}