问题标签 [display-templates]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2967 浏览

asp.net-mvc - 显示模板不用于界面

我在显示模板和处理实现该接口的接口和对象时遇到问题。在示例中,我有许多对象,我想以固定方式呈现它们,我决定创建一个接口并在我决定放入共享显示模板文件夹的视图中引用它。 DisplayFor对传递给它的在视图中实现接口的对象不起作用,有人知道解决方案吗?

它可能更容易通过代码来解释,所以我写了一个简单的例子。基接口和从它继承的两个类:

共享显示模板中的示例显示模板

要传递给视图的示例视图模型

控制器(在这种情况下创建模拟信息)

最后是我期望DisplayFor工作的观点

既然所有的对象都在视图模型中定义为接口,为什么不能使用显示模板呢?

我发现的一种解决方案是简单地使用代码

回顾一下,问题是:

为什么会这样?有没有办法DisplayFor正确计算出一种类型的Cat实现IPet实际上应该查看公共共享视图IPet.cshtml

谢谢

0 投票
1 回答
1163 浏览

asp.net-mvc-3 - C# MVC 3 Razor - 使用 DisplayTemplate 调用 DisplayTemplate

我有一个简单的产品列表,产品分为两个不同的类别,并根据其类别 ID 在页面上显示不同。

是否可以嵌套相同模型类型的 DisplayTemplate,例如

我试过这样做,它没有中断,但它也不起作用,产品模板按预期运行 - 我添加了一些调试文本,可以正确输出产品列表中的每个相应项目。我怀疑模板引擎中有某种阻塞子句,以避免它消失在它自己的背面,递归调用同一模板是这种情况的可能性,我说我想我会问,因为这会很方便处理列表的多个 DisplayTemplate 的方法,而无需使用 foreach 循环对其进行迭代。

0 投票
1 回答
9964 浏览

razor - ASP.NET MVC 4 仅为字符串定义显示模板

我只想为字符串属性创建一个显示模板,并为所有其他属性使用默认值。

我尝试在 Views/Shared/DisplayTemplates 中创建一个 string.cshtml,其内容如下:

现在,当我尝试打开使用 DisplayFor(m => m.property) 的任何视图时遇到问题,它显示如下错误:传递到字典中的模型项的类型为“System.DateTime”,但该字典需要'System.String' 类型的模型项。或:传入字典的模型项的类型为“System.Int64”,但此字典需要“System.String”类型的模型项。

我知道我可以通过为使用的每种类型添加显示模板来解决这个问题,但我想也可以对未定义自定义模板的所有类型使用“默认”模板?

更新 达林回答后,我检查了布拉德的教程并将模板更改为:

这基于“默认”模板,适用于所有类型。

0 投票
2 回答
6235 浏览

asp.net-mvc-3 - 如何在 mvc3 razor 中创建和实现自定义数据类型

我用谷歌搜索这个问题太多次了。但我找不到任何解决方案来做到这一点。

我想创建一个DataType具有默认值的自定义EditorTemplateDisplayTemplate用于mvc3 razor

模型

查看 - 剃刀

实际上我想用默认的编辑器模板和显示模板创建一个可重用的数据类型。

请问您有什么建议吗?你能给我一个有用的链接,或者如果可以的话,请给我一个简单的例子?提前致谢。

0 投票
2 回答
1190 浏览

c# - ASP.NET MVC 3 Razor DisplayFor Delegate

我收到此错误:

模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。

这是我的代码(自定义 HTML 帮助程序,包装 DisplayFor 以便我可以选择模板):

当我这样使用它时,它可以工作:

因为model具有 的属性LocationType

但是当我在另一个自定义 HTML 助手中执行此操作时:

它错误。

我可以更改我的DisplayLocationTypeFor助手来使用htmlHelper.Display,但我不确定如何。

有任何想法吗?

我想要做的是,我有一种特定的方式来渲染LocationType模型,我希望在整个站点上发生这种情况。在内部,模板使用资源文件,以及基于 URL 的其他一些智能。换句话说,有逻辑——我不想重复。

这样,我所有的视图/模板都会调用此模板作为呈现LocationType.

0 投票
3 回答
2976 浏览

asp.net-mvc - 自定义 EditorFor 或任何 XXXXFor

每当我使用@Html.EditorForModel()以下标准模板时,都会在 asp.net mvc 中显示

Asp.net MVC 模板中的默认值

我想自定义这个 HTML 的格式!!

但是注意!!!!

  1. 我知道这个功能-> @Html.EditorForModel("MY-TEMPLATE")
  2. 我知道这个功能-> @Html.EditorFor(p => p.MY-PROPERTY, "MY-TEMPLATE")
  3. 我知道这个功能-> Views\{CONTROLLER}\EditorTemplates\{CLASSNAME\TYPE}
  4. 我知道这个功能-> Views\Shared\EditorTemplates\{CLASSNAME\TYPE}

我的目标是修改整个项目的默认模板!

无需为此走遍整个项目!

  • 使用时@Html.EditorForModel(),每个属性都会生成一个自定义的HTML!!

新模板

新模板将是这样的:

0 投票
1 回答
277 浏览

asp.net-mvc-3 - 显示泛型模板 - 未找到视图

我有以下课程:

通用模型

我的控制器动作是:

而我的观点是:

我在 Views/Shared/DisplayTemplate 文件夹中有一个名为 GenericModel.cshtml 的文件:

找不到这个视图。我看到当我打印出模型类型的名称时,我得到“GenericModel 1". Seeing that, I renamed my template "GenericModel1.cshtml”。这似乎有点像黑客,有没有更简单的方法来找到这个显示模板而不诉诸于此?

0 投票
1 回答
2086 浏览

asp.net-mvc-3 - MVC3 显示模板截断字符串

我创建了一个自定义的 Display For 模板,该模板主要用于我的索引文件中,这样当记录显示​​在列表中时,如果某些记录太长,它们就不会变成丑陋的生物。我试过以下:

虽然它适用于长度超过 35 或等于它的字符串,但如果字符串小于它,它就不起作用。我已经尝试过 else 语句,但它也不起作用。这样做的正确方法是什么?

编辑:空字符串。在源页面文件中,两者之间没有任何内容。

0 投票
1 回答
255 浏览

asp.net-mvc - 隐式使用 ASP.NET MVC DisplayTemplate

我在cshtml视图中有一些这样的代码

在我的 ~/Views/Display 文件夹中,我有一个名为 DateTime.cshtml 的文件,其中包含

所以我的观点是渲染两个版本的 CreatedDate,一个带有完整的 DateTime 字符串,一个带有短日期字符串。

我是否可以将我的 ASP.NET MVC4 项目配置为在显示 DateTime 时使用我创建的显示模板,而不显式调用 DisplayFor?即“@record.CreatedDate”行如何使用我的 DateTime 模板?

0 投票
1 回答
1343 浏览

asp.net-mvc-4 - 尝试在 displaytemplate 中访问父视图模型的属性

我正在尝试构建一个 asp.net mvc 4 应用程序,该应用程序利用部分视图和显示/编辑器模板和 Kendo ui。我有一个特定页面的视图模型:

和 Leaf 一样,Flower as Bug 也有自己的属性。举例:

我在我的视图中使用了部分视图,因此使用 ajax 更新它们变得更加容易。我的正常视图:PlantDetail.cshtml

在我的部分视图“_leafs”(以及“_flowers”中,我有一系列按钮调用需要 LeafId 和 PlantId 的操作:

局部视图“_leafs”:

我的显示模板“Leaf.cshtml”:

现在我的问题是我似乎无法在我的显示模板中访问我的父视图模型的 PlantId。(而且我在每个显示模板中都有同样的问题..)我已经在我的 url.action 中使用路由值进行了尝试,我知道我最终可以在 javascript 中访问 PlantId,但是有任何(mvc)方法可以继续使用 displaytemplates 并且不要将我的 plantId 复制为我的子 Leaf viewmodel 的属性?

我已经尝试在我的显示模板中使用类似“@HttpContext.Current.Request.RequestContext.RouteData.Values[“controller”].ToString()”的东西来访问我的 parentviewcontext,但似乎找不到我的值PlantId(如果它甚至存储在那里..)。

还有其他人有什么建议吗?