MVC的Controller-Action布局:單獨的建立/編輯頁面還是建立/編輯/查看一體的頁面?

來源:互聯網
上載者:User

剛開始的時候非常認同asp.net中MVC的Action的布局方法:無論大小,只要是一個動詞,都給一個單獨的頁面,比如Create/Edit/Detail/Index。

編寫了一段時間後,又發現這樣很不方便,尤其是像“建立角色”這樣的頁面,就一個TextBox,其他什麼都沒了,單獨編寫一個Create一個Edit,不如在Index頁面上方放一個TextBox,底下已經存在的角色也直接用TextBox而不是文本,這樣想建立就建立,想編輯就編輯。

又編寫了一段時間,又發現這樣有風險。因為在另外一個頁面上我把所有資訊也這樣做的,但這個頁面會有大量的使用者訪問,很容易出現大家同時編輯同時更新的問題,鎖都鎖不住因為不知道誰在編輯什麼。

到底怎麼辦呢?

雖然不能說找到了個完美方案,但終於說服自己這是個還算可以的答案。那就是:

對於多人訪問的頁面,Create/Edit/Detail/Index應該是分開的

我編寫的是一個專案管理軟體,因此需求、缺陷、組內的任務這些資料都會有多人查看,分開寫有兩個好處:

1. 避免了前面提到的編輯後更新衝突問題。

2. 很容易設定許可權,比如有些人只能看不能編輯和建立,有些人可以建立,但是不能編輯別人的任務,等等。

3. 很容易用一個連結來作為外部介面。

比如可以把“xxx/Stories/Create”放到內部OA裡邊,訪問的人就可以按一下建立一個使用者故事(需求)。由於很可能是銷售人員在建立,他們一是不應該有許可權瀏覽所有故事,二是如果真讓他們進入一個萬能介面,反而不知道在哪建立故事好了。

對於單人訪問的頁面,這些視圖可以且傾向於合并在一起

1. 典型的情況是Adm的所有功能,如果某一次要求把所有使用者名稱都改成“last.first”,讓他們點無數次Edit跑很多地方才能完成,不如在一個巨型編輯介面中集中完成。反正不會有無數Adm一起工作,即使他們請了幫手一起工作也肯定會事先協調,很安全。

2. “我的個人中心”,這個地方鐵定是自己才會去的,裡邊很多資訊都應該本著方便快速而非許可權管理的原則設計。

3. 極少數團隊領導才會操作的頁面,比如計劃/審批頁面等。

 

這個思路是不是用提前預訂的判定標準,而是遵循“在那種情境下,怎樣做才是更好”得出來的,估計編到後面還可能發現新的規律,到時候再補充。

補充一點關於介面布局與產品理念的內容。 

本人後期的工作是管理軟體的市場和銷售工作,在工作中遇到了很多易用的不易用的產品,發現了一些潛在的規律。

在早期的軟體開發中,習慣的做法是使用單一的功能強大的介面,來完成所有工作。比如Word和Excel,使用整整一天,都幾乎在單一介面中完成;而無論使用者的角色如何,也都使用這個介面。因此當軟體功能越來越複雜時,使用的難度也隨之急劇上升。

從功能角度看,比如當你在Excel表中使用公式/條件式格式設定這些功能時,一定覺得空間非常擁擠。那麼大的螢幕,只有極少部分在為當前的操作服務。

從角色角度看,即使是Word/Excel這樣的簡單軟體,也存在作者/評審者/閱讀者這些角色,他們的許可權、使用習慣、常見操作是完全不同的。單一介面就使得某些角色感覺到很不舒服。

在近期的軟體開發中,由於Web的出現,單一介面已經逐漸傾向於完成單一功能。各種網站是個典型,比如新浪,其核心功能和代碼量可能並不會超過Office,但是其介面數量卻巨大的得多,而帶來的效果是:任何人在新浪上面是不會迷路的,也不會覺得功能繁雜無所適從。

從功能角度看,分拆介面的好處是:

1. 幾乎不用額外地開發對外的API了。

若一個介面提供且只提供一個功能,則這個介面的連結就是那個功能的API;

2. 許可權控制變得簡單多了。

如果一個介面中包含眾多功能,登入的人到底能操作和不能操作哪個功能就是一個很複雜的工作,要在View中做大量工作,而現在所有工作都在Controller裡邊完成。

從角色角度看,分拆介面的好處是:

1. 角色各自查看自己的內容。

千萬不要認為給他更多內容一定會更好,其實不然。上次在培訓課上,練習的時候就有人寫了一個使用者故事,這個故事是“作為一個使用者,可以登入系統查看項目及自己的任務,以便……”,當時的內容是“使用者建模”,就是要弄清楚誰會用這個功能,而分析結果是:“高層,中層,產品經理,專案經理,組員都會用到這個故事。”這個就麻煩了,因為這些人的工作內容截然不同的,上來看內容的重點也就不同。這個介面即使設計出來,也一定有人覺得不方便。

2. 角色各自操作自己的功能。

如果介面上明明有一些TextBox,使用者也高高興興地填上一些內容,按下按鈕時才出來:“您沒有編輯許可權”,是一件非常令人惱火的事情。分拆介面後,各自去各自的介面,沒有編輯許可權的人就看不到TextBox。

分拆介面的壞處則是大量操作的能力變差了,因此若此功能非常重要,可以嘗試在大量大量操作的介面上做複合型介面,配合jquery的focus功能等,做出一個以最小運算元量完成操作的介面。

 

點擊下載免費的敏捷開發教材:《火星人敏捷開發手冊》

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.