templates – 嵌套的@ Html.DisplayFor(model => baseClass,“BaseClass”),用于不渲染基类模板

templates – 嵌套的@ Html.DisplayFor(model => baseClass,“BaseClass”),用于不渲染基类模板,第1张

概述几个子类(例如,Cheese)共享从基类(Product)派生的公共属性,其属性如SKU,Name和Description. 为了避免在渲染显示/编辑器模板时出现重复,我希望每个子类模板(Cheese.cshtml)在其共享公共基类模板(Product.cshtml)下面呈现其唯一字段. 但是,从派生类转换为基类(Product)cheese并尝试在子类模板中显示其模板没有任何效果. Displa 几个子类(例如,Cheese)共享从基类(Product)派生的公共属性,其属性如SKU,name和Description.

为了避免在渲染显示/编辑器模板时出现重复,我希望每个子类模板(Cheese.csHTML)在其共享公共基类模板(Product.csHTML)下面呈现其唯一字段.

但是,从派生类转换为基类(Product)cheese并尝试在子类模板中显示其模板没有任何效果.

displayTemplate文件结构:

.\VIEws\Shared\displayTemplates    .\Product.csHTML -- renders common base class fIElds    .\Cheese.csHTML -- renders unique class fIElds and calls Product.csHTML

Cheese.cHTML:

@model Application.Data.Models.Cheese@{    var product = (Application.Data.Models.Part)Model;}Base Product FIElds:@HTML.displayFor(x => products,"Product") @* no effect! *@<div >    <div >@HTML.LabelFor(m => Model.UniqueProperty)</div>    <div >@HTML.displayFor(m => Model.UniqueProperty)</div></div>

转换到基类并呈现Product.csHTML模板可以从VIEw中正常工作,但不能在子类模板中工作.

如何从子类模板中为基类渲染公共模板?

解决方法 找到解决方案

@ HTML.displayFor(…)cannot be nested,所以你必须在派生模板中使用@ HTML.Partial,如下所示:

@HTML.Partial("~/VIEws/Shared/displayTemplates/Product.csHTML",product) %>

或者,如果您的文件结构允许,则更简洁的路径:

@HTML.Partial("displayTemplates/Product",product)
总结

以上是内存溢出为你收集整理的templates – 嵌套的@ Html.DisplayFor(model => baseClass,“BaseClass”),用于不渲染基类模板全部内容,希望文章能够帮你解决templates – 嵌套的@ Html.DisplayFor(model => baseClass,“BaseClass”),用于不渲染基类模板所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1135659.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存