![](/img/trans.png)
[英]c# asp.net mvc One Button to submit data from multiple forms on one view
[英]ASP.NET MVC C#: Bringing in data from multiple tables/queries into a view
好的,我仍然掌握asp.net和MVC框架,並將我的知識從經典的ASP和VB轉換過來-所以請保持溫柔。
由於先前的幫助將我指向正確的方向 ,因此我的第一個視圖(/ home / details / X)運行良好,現在我需要將多個表和查詢/視圖中的數據添加到MVC視圖中(我討厭SQL和MVC都使用單詞view表示不同的含義)。
我不是在尋找別人為我寫答案的人(除非他們覺得自己真的很精力充沛),更何況是有人將我指向我應該看的正確方向,並繼續閱讀以理解並執行這個我自己。
我的問題
我需要在此視圖中顯示多個數據集,並且每個不同的數據集都建立了正確的PK / FK 1-M關系,並且需要循環瀏覽所得的記錄。
我以前是怎么做到的
在我經典的ASP時代,我會在要使用數據的頁面頂部定義SQL查詢,並使用select語句,如下所示:
SELECT * FROM query_name
WHERE query_uniquecolumnname = Request.QueryString("value")
完成此操作后,您可以將query_name NOT BOF / EOF設置為while,然后放入您要從該查詢中獲取的字段名稱,此操作就完成了。
我現在該如何實現?
因此,根據我的經典ASP知識快速轉發,我如何使用MVC達到相同的結果?
我希望使用的表/視圖已經在我的數據模型中定義了(並且關系在其中顯示,我認為這是一個加號),我只需要弄清楚如何在頁面中調用這些表/視圖並使用在“詳細信息”視圖中顯示的記錄的ID,以確保僅顯示相關數據。
提前致謝
您正在尋找的概念稱為ViewModel 。 本質上,這是您編寫的自定義類,其中包含視圖中將使用的所有數據。 因此,它負責合並來自不同表的所有數據並將其作為屬性公開。 如果您使用的是數據訪問層,那么這通常就像將幾個實體放在一起一樣簡單。 如果您使用原始SQL來執行此操作,則將在訪問屬性時執行查詢。
然后,使View從ViewModel繼承,如下所示:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.MyViewModel>" %>
現在,在視圖中,您只需編寫如下語句即可訪問對象的所有不同屬性:
<%= Html.TextBox("MyProperty", Model.MyProperty) %>
要從控制器構造視圖,請創建類的新實例(MyViewModel),並向其傳遞所需的詳細信息記錄的ID,並且類中的邏輯將負責獲取正確的數據。 然后像平常一樣從控制器返回您的視圖。
var myDetailsModel = new MyViewModel(detailsID);
return View(myDetailsModel);
我建議閱讀有關ASP.NET MVC的入門知識
它涵蓋了啟動和運行所需的大多數基本方案。
但是,如果要將多個結果集合並為一個,然后將其作為視圖返回,則應創建一個自定義對象,並將結果集映射到它,然后可以在視圖中綁定到您的自定義對象。
當我需要在網頁上顯示多個類似內容時,通常使用RenderAction來完成。
RenderAction允許您使用專用於視圖的特定部分(實際上是子視圖)的控制器方法,因此您可以將單個強類型數據集傳遞給該“子視圖”。
RenderAction在Microsoft.Web.Mvc(“期貨”)程序集中。
如果您是這方面的新手,我深表歉意。 這有點前沿,但是無論如何您都需要知道它。 請務必先查看NerdDinner教程。
http://www.andreas-schlapsi.com/2008/11/01/renderaction-and-subcontrollers-in-aspnet-mvc/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.