簡體   English   中英

使用動態內容創建局部視圖

[英]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引用容器的模型,並在容器的控制器業務中初始化。 當然容器的控制器可以運行任何數據訪問邏輯來從數據庫中獲取動態數據並將它們傳遞給部分模型。

看一下MSDN ,並在本文中

假設您正在使用剃刀視圖引擎,您可以將帶有幫助函數的.cshtml文件放在App_Code文件夾中。

語法是這樣的:

@helper FormatDate(DateTime date)
{
    @date.ToShortDateString()
}

你這樣稱呼它(假設文件是​​Utility.cshtml)

@Utility.FormatDate(Patient.DOB)

因為您可以將參數傳遞給幫助程序,所以您可以傳遞所需的任何類型,包括復雜對象。

我最近發布了一個nuget包來做這件事。 它被稱為動態MVC。

http://dynamicmvc.com

您可以查看codeplex上的源代碼。

https://dynamicmvc.codeplex.com

我這樣做的方法是使用MVC內置的ModelMetadata引擎,允許我以弱類型的方式獲取任何屬性的值。 ModelMetadata引擎最初來自ASP.net動態數據,並在MVC2中移植到MVC。 它適用於這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM