【发布时间】:2013-11-05 20:52:01
【问题描述】:
我正在尝试使用 razor 视图引擎在 asp.net mvc 中渲染面板(很像缩略图或 Web 部件),当我必须一次渲染它们时它很容易,因为我有一个视图和所有的渲染逻辑都在那里。
但是当我不得不向面板组添加一个新面板时,我的问题就开始了,这是我的看法:
@model IEnumerable<FonteDeNoticia>
<div class="row">
<div class="form-group col-lg-8">
<div class="input-group">
<input id="txtUrl" type="text" class="form-control" placeholder="Url">
<span class="input-group-btn">
<button id="btnAdicionarUrl" class="btn btn-default" type="button">Add</button>
</span>
</div>
</div>
</div>
<div id="fontesDeNoticia" class="row-fluid">
@foreach (var fonte in Model)
{
<div class="col-lg-2 col-lg-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><a href="@fonte.Link" target="_new">@fonte.Nome <span class="badge badge-info">42</span></a><span class="iconeClicavel"><a><i class="icon-remove pull-right"></i></a></span><span class="iconeClicavel"><a><i class="icon-gear pull-right"></i></a></span></h3>
</div>
<ul class="list-group">
@foreach (var noticia in fonte.Noticias.Take(3))
{
<li class="list-group-item">
<a class="linkDeNoticia" href="@noticia.Link" target="_new">@noticia.Titulo</a>
<small class="dataDeNoticia">- @noticia.DataDePublicacao</small>
</li>
}
</ul>
</div>
</div>
}
</div>
所以我开始意识到需要改变一些东西......我尝试使用 DisplayForModel,但我渲染面板的方式很重要,我无法让它工作。
然后我想到了将foreach渲染为for循环中的局部视图,但我认为这样做的性能一定很糟糕!
对此有什么想法吗?
【问题讨论】:
-
是否要在页面中动态添加面板?
-
看看如果你想动态添加一些东西,你必须使用 ajax.. 所以你只会更新或替换你的页面的一部分。或者您想完全重新呈现您的页面?
-
我想动态添加面板是的,我试图做一个返回单个面板的操作,但我找不到将它“附加”到现有面板的方法,我知道我可以得到我需要的关于成功回调的信息,但我需要那个 foreach 逻辑。
-
为了更清楚一点,第一个 foreach 上方的按钮是为了向页面添加一个新面板,但是当发生这种情况时,我需要确保这个新面板通过渲染逻辑。
-
将代码放入部分视图页面并从 Html.Partial 或 RenderPartial 渲染它们
标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor