[英]Creating partial view with dynamic content
我理解当我创建一个视图时,除了html和模型/控制器中的数据之外,我不应该在其中放置任何代码,这是我到目前为止所做的。
但是让我们说有一个可以在多个视图中使用的动态生成的html剪辑,我猜这将是项目中的Shared文件夹中的部分视图。 但由于它是局部视图,没有绝对的控制器来处理它的动态数据传播(来自db),我将如何调用,以及我将数据从db传播到视图(或模型?)的位置,如果让我们说部分视图是为table.id=n
等动态呈现内容的table.id=n
。
我很新,并在.net中编写教程,试图弄清楚如何做到这一点。 有谁知道它是如何完成的? 希望这个问题有道理。
您始终可以为部分定义模型。
并且您可以从容器视图中渲染部分,传递其模型的动态填充实例:
<!-- index.cshtml -->
<h1>Feed Upload</h1>
<div id="uploader">
@Html.Partial("~/Views/Shared/Controls/_FileUploader.cshtml", new FileUploaderModel() { UploaderClassName = this.Model.UploaderClassName })
</div>
在这个简单的例子中,我使用@Html.Partial()
方法从index.cshtml
调用部分_FileUploader.cshtml
,传递一个指定UploaderClassName值的新模型实例。
编辑
this.Model.UploaderClassName
引用容器的模型,并在容器的控制器业务中初始化。 当然容器的控制器可以运行任何数据访问逻辑来从数据库中获取动态数据并将它们传递给部分模型。
假设您正在使用剃刀视图引擎,您可以将带有帮助函数的.cshtml
文件放在App_Code
文件夹中。
语法是这样的:
@helper FormatDate(DateTime date)
{
@date.ToShortDateString()
}
你这样称呼它(假设文件是Utility.cshtml)
@Utility.FormatDate(Patient.DOB)
因为您可以将参数传递给帮助程序,所以您可以传递所需的任何类型,包括复杂对象。
我最近发布了一个nuget包来做这件事。 它被称为动态MVC。
您可以查看codeplex上的源代码。
https://dynamicmvc.codeplex.com
我这样做的方法是使用MVC内置的ModelMetadata引擎,允许我以弱类型的方式获取任何属性的值。 ModelMetadata引擎最初来自ASP.net动态数据,并在MVC2中移植到MVC。 它适用于这种情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.