2013-02-22 139 views
4

我最近開始學習ASP.NET Model View Controller (MVC)。這是非常獨特的方法,它需要的網站,我注意到與dynamics潛力。這將大大提高維護。ASP.NET MVC動態設計

但我可以看到如何過度使用dynamics可能是不好的,特別是如果你偏離strongly typed model。所以我的問題是這樣的...

我創建了一個佈局,但我想佈局爲fluid。我希望設計在不影響我的邏輯的情況下變得非常容易。我知道你可以創建Master PagesMaster Content Pages,它可以容納大部分佈局。除此之外,我的使用仍然有限制。

有沒有辦法將這些Master PagesMaster Content Pages更改爲真正的動態實體?本質上designer可以使用一個你看到的是你得到的字段我創建它允許整個網站被修改?

我最初的想法是創建一個dynamic layout,其中每個View引用一個數據庫;無論這些變量是否會創建佈局。但我不確定這是最好的方法嗎?

任何有關最佳方法的建議或想法?

請問我不打算開始辯論,但是如果人們可以將我指向一個方向,我可以研究這種實施方法會大有幫助。這樣我就可以找到適合這個項目需要的最佳解決方案dynamic layout


更新:

爲了讓背景在這個項目上,我公司擁有數家子公司。這些子公司將利用該應用程序,但希望爲該特定公司量身定製。爲了避免過多的設計佈局,我想abstract那部分。

這樣,我logic將不會受到影響,但軟件模塊,足以滿足我們的所有子公司的設計需要有沒有我可以自定義他們的每一個一個或風險影響logic設計師。

感謝您的協助。


更新:

爲了幫助澄清,我們的目標是讓User Interface從應用程序分離。在一個正常的Windows Application我會利用Inversion Of Control來幫助從最初的邏輯分離接口和結構。

這種解耦方法很有幫助,目標是解耦這種情況下的接口Razor Syntax,這將設計創建結構。如果你有一個網站:

<html> 
    <div id="Page-Container"> 
    <div id="Header" /> 
    <div id="Content" /> 
    <div id="Footer" /> 
    </div> 
</html> 

那結構將是靜態的,但對我來說,我想它是dynamic。這樣,我的邏輯可以通過結構抽象出來,但是設計師可以操縱並改變page layout,不過他想。

+0

看看烏節路項目,人們可以提供自己的主題。它有一個區域的概念,每個主題都可以暴露。 – dbones 2013-02-22 23:30:00

+0

這聽起來與Dot Net Nuke很相似。佈局的某些部分分解爲模塊。 – Greg 2013-02-22 23:33:13

回答

1

不知道我是否完全理解您的要求.....但也許下面的前提會有興趣嗎?

@model CompanyName.LayoutModel 
<html> 
    <body> 
    @foreach(string view in Model.Views) 
    { 
     @Html.Partial(view); 
    } 
    </body> 
</html> 

這將取決於你使用的UI框架是如何工作的。這個想法是,你向Razor展示一個只包含Razor部分渲染視圖集合的對象。爲了。

而不是使用ASP.NET MVC的初始服務,你可能想要檢查像http://www.google.com/ig這樣的網站,他們使用ajax來讀取用戶的自定義佈局(如果你編輯你的主頁設置,你可以完全自定義佈局以及您在主頁上獲得什麼樣的新聞),然後用來自其他ajax調用的數據填充這些佈局。
對我來說,這聽起來更加靈活,每個AJAX調用都可以通過ASP.NET MVC方法(返回剃鬚刀頁面的輸出),並且JavaScript可以直接將HTML直接插入到DOM中。當調用可能需要更長時間才能執行或依賴第三方通信的方法時,這也爲您提供了更大的靈活性,因爲它允許您更容易地呈現「加載」動畫並報告錯誤。

+0

這是一個很棒的帖子,我會檢查一下。 – Greg 2013-02-22 20:52:42

+0

它的煩人的一種,因爲現在我正在尋找功能.....我找不到它!這是非常悲傷的,它非常漂亮。但是背後的技術前提仍然存在,只是我不能向你展示真正的交易。我相信Google News的工作方式與此相同,但編輯遠不如性感。 – Quibblesome 2013-02-22 22:54:53

+0

如果你確實找到它,我很樂意看到它。 – Greg 2013-02-22 22:59:01

0

在剃刀,你可以輕鬆地做到這一點。 您必須爲您的佈局模板創建一個模型並將其綁定到您的剃鬚刀佈局中。 佈局的每個部分都可以在@if剃刀塊中,該塊檢查模型的字段並動態創建每個零件。

+0

謝謝你的帖子。因此,使用Razor來檢查模型中的字段,以便從該模型中動態生成每個單獨的方面?我理解正確嗎? – Greg 2013-02-22 18:50:44

+0

爲了清楚起見,你想要做的是爲控制器動作動態生成視圖,而不是爲每個視圖手動創建剃刀模板? – Jack 2013-02-22 19:12:56

+0

我想要做的就是讓'Razor Layout'動態改變。我看不到'@ ViewBag'在整個代碼中都是有益的。但是我希望'Divs'能夠在飛行中被修改或添加。如果沒有意義,我會嘗試更好地對其進行修改。 – Greg 2013-02-22 19:52:54

1

這聽起來像你正在尋找某種CMS。已經有一堆CMS build for ASP.NET MVC,但是你可以建立你自己的,通過在數據庫中存儲視圖來滿足你所有的需求。在這種情況下,this article可能會爲您指出正確的方向。

+0

我希望避免CMS,其中一些方面的表現像一個,但我想避免它們。主要是因爲它們是一般的而不是特定於業務的。我知道Umbraco是MVC,但是你知道任何不那麼廣泛的嗎? – Greg 2013-02-22 23:27:00