2011-04-25 80 views
0

我剛剛學習ASP.Net的MVC框架,所以我的問題可能是基本的。但是當我緊緊地綁定到View Models時,我需要網頁的可重用性方面的幫助。在您的街道地址輸入最接近的庫搜索:ASP.Net MVC-服務器端包含綁定到視圖模型

考慮如下所示的應用程序:

屏幕1。搜索結束後,圖書館將顯示該頁面已緊密綁定到「圖書館視圖模型」。

屏幕2:按照姓名和出生日期搜索您的註冊信息,並在結果中包含最近的圖書館,屏幕布局與屏幕1完全相同。此屏幕顯示的信息多於屏幕1,因爲它與查看註冊模型,其中包含作爲屬性的庫視圖模型。

我想重用屏幕1,基本上是做一個「有」,讓我對屏幕1所有HTML沒有在屏幕2.

被改寫,但我怎麼做,當兩者緊密綁定到不同的視圖模型?

我可能甚至沒有用正確的詞彙搜索。任何指導適當的功能,將不勝感激。

回答

2

將在屏幕1和屏幕2中使用的HTML應放置在部分視圖中。部分視圖像用戶控件,可以在多個屏幕中使用。

將部分視圖綁定到庫視圖模型。

在屏幕2,你可以使用下面的代碼使局部視圖:

<%: Html.RenderPartial('LibraryPartialView', Model.LibraryViewModel) %>

這裏我們渲染庫局部視圖在屏幕2並通過它的圖書館視圖模型對象(其最初包含在註冊視圖模型中;這裏Model涉及註冊視圖模型)。

在屏幕1中,您必須使用相同的代碼呈現庫部分視圖。

+0

完美 - 謝謝! – user158017 2011-04-27 16:41:03

+0

只是在對此進行處理之後對上述內容進行了更正。而不是<%:Html ....它應該是<%Html .... – user158017 2011-04-29 14:09:24

1

此外,您還可以使用ajax和jQuery加載它。喜歡的東西

<div id="libs">loading...</div> 
$("#libs").load("/libraries/address/12-w-6-ave"); 

或者,如果庫不是模型的一部分(如果你喜歡它不被),你只需要加載的動作,就好像它是一個單獨的請求

@HTML.RenderAction("action", "controller", new {id=Model.Address}) 

兩個如果您需要/喜歡,那些方法允許您將註冊信息從圖書館信息中分離出來。

+0

這會起作用,但是我們在這個系統中避免使用基本功能的Javascript。 – user158017 2011-04-27 16:34:33

+0

在這種情況下,如果數據不是模型的一部分,並且部分(如已顯示的答案),則使用動作。 – 2011-04-28 14:52:49

+0

好 - 這是有道理的。感謝您的澄清! – user158017 2011-04-29 14:09:44