【发布时间】:2021-09-24 08:43:48
【问题描述】:
是否可以从 JavaScript 中的对象数组中获取数据,到 .cshtml 视图中。
newsObj[]的填充代码;
@foreach (var item in Model.Articles)
{
@:newsObj.push({
@:Id:@item.Id,
@:Title: "@item.Title",
@:FeaturedImage: "@item.FeaturedImage",
@:DateFormated: "@item.DateFormated",
@:Summary: `@item.Summary.Trim()`,
@:Category: "@foreach (var cat in @item.Category) {@(cat.Title+" ")} "});
}
View 中的代码用于显示来自名为 Articles 的模型的数据:
<div class="novice-list">
@foreach (var item in Model.Articles)
{
<div class="novica-container">
<a href="@DataContext.Current.RouteUrlManager.GetModuleLink("article", null, "details", item.Id, item.Title)">
<div class="media">
@{
string slika = string.Empty;
if (item.Id > 166 || item.Id == 159)
{
slika = $"{WellKnownStrings.StorageBaseUrl}{WellKnownStrings.ArticleImageContainer}/{item.FeaturedImage}";
}
else
{
slika = "https://kompasxnet.blob.core.windows.net/images/" + item.FeaturedImage;
}
}
<div class="slika" style="background-image: url(' @slika ');">
</div>
<div class="media-body">
@*<a href="#">content</a>*@
<div class="meta">
<span class="published">@item.DateFormated</span>
<span class="category @foreach (var cat in @item.Category) { @(cat.Title+" ")}">
@foreach (var cat in @item.Category)
{
<span class="cat @cat.Title">@cat.Title</span>
}
</span>
</div>
<h2>@item.Title</h2>
<p>@item.Summary</p>
</div>
</div>
</a>
</div>
}
</div>
这种方法的原因是过滤,在 JS 的帮助下,我将原始数组过滤到另一个数组。现在我必须在视图中显示过滤后的数组。可以用 replaceWith() 或 mybe 用 innerHTML 来完成吗?
【问题讨论】:
-
为什么不尝试调用action过滤数据,然后刷新模型数据,这样页面数据就会被刷新。如果你想使用innerHTML,你需要将整个生成的html代码更改为
<div class="novice-list">. -
newsObj[] 在 JS 中借助 indexof() 进行过滤。所以我过滤的数据在 newsObjFiltered[] 中,然后这些值必须传递给视图。你是什么意思?
-
当你过滤文章时?我的意思是调用一个控制器动作并将模型传递给它,然后更改模型.文章,动作返回带有过滤后的模型.文章的视图。
-
无法更改型号。基本上该页面目前每页有 4 篇文章,我在这些文章上方创建了一个过滤器。问题是过滤器只过滤显示的文章而不是整个集合。我无法更改控制器,这就是我的解决方案朝这个方向发展的原因。我现在进入最后一步,将过滤后的数据从所有文章传递到视图。这就是我卡住的地方
-
你的
"@DataContext.Current.RouteUrlManager.GetModuleLink("article", null, "details", item.Id, item.Title)"和$"{WellKnownStrings.StorageBaseUrl}{WellKnownStrings.ArticleImageContainer}/{item.FeaturedImage}";是什么。可以分享一下它的数据吗,我可以尝试用innerHTML分享一个demo。或者你可以给我一个示例数据。跨度>
标签: javascript jquery asp.net-mvc asp.net-core razor