【发布时间】:2018-06-25 14:51:12
【问题描述】:
我在将 Html 扩展从 .NET Framework 移植到 .NET Asp.Net Core 时遇到问题!
这是cshtml文件sn-p
@if (Model.Length == 0)
{
WriteLiteral("No current tasks!");
}
<section>
<div class="panel-group" id="accordion-task" role="tablist" aria-multiselectable="true">
@for (var index = 0; index < Model.Length; index++)
{
var task = Model[index];
var viewName = "_" + task.TaskType;
var exists = Html.PartialViewExists(viewName);
var vd = new ViewDataDictionary(ViewData)
{
{"index", index}
};
vd.Model = task;
Html.RenderPartial(exists ? viewName : "_Task", task, vd);
}
</div>
</section>
扩展PartialViewExists 扩展消息如下所示:
public static bool PartialViewExists(this HtmlHelper html, string viewName)
{
var controllerContext = html.ViewContext.Controller.ControllerContext;
var result = ViewEngines.Engines.FindPartialView(controllerContext, viewName);
return result.View != null;
}
将其转换为 .net 核心似乎会带来许多问题。
- ViewContext 属性没有悬挂控制器。所以 我无法访问 ControllerContext
- 即使我有一个 ControllerContext 我仍然需要一个 IViewEngine 似乎只能通过依赖注入获得
我在扩展中看不到这样做的方法,但很想被证明是错误的(依赖注入很好,但可能太过分了!)
谢谢
斯蒂芬
【问题讨论】:
标签: c# razor asp.net-core