1

通過ASP.NET MVC 2生成的默認腳手架視圖包含鏈接,如:ASP.NET MVC 2個返回鏈接到相應的視圖

<%: Html.ActionLink("Back to List", "Index") %> 
<%: Html.ActionLink("Create New", "Create") %> 

這些鏈接是完美的,如果我從同一來到這個頁面根。但是,例如,如果我有訂單和人員,並且我通過/Persons/Orders/3導航到/Orders/Edit/17,那麼'回到列表'會將我退回給訂單root not Persons root,因爲'Edit Orders'視圖只知道訂單。這使得導航尷尬,打破了流程。

我想重複使用相同的'編輯訂單'視圖,無論我來自哪裏,但我不知道如何傳遞此信息。

我知道可以傳遞像/Orders/Edit/17?myparam=myvalue這樣的參數,但是如果我需要傳遞表示網格排序/過濾順序的參數,這會限制我的選擇嗎?

將返回/原點位置傳遞給我的視圖的首選方式是什麼,以便它可以正確呈現鏈接?否則,我怎樣才能以不同於控制器的方式調用視圖?

編輯:

對於一個乾淨的解決方案,請參閱THIS POST

回答

1

通過查詢字符串參數中傳遞不會真的,只要你不使用相同的名稱限制你。 querystrings有一個大小限制,但你可能不會觸及它。

這基本上是我怎麼做的。我很好奇看到別人的回答。

+0

這個功能看起來應該是框架中應該考慮到的東西;要指定這些參數似乎相當棘手,因爲您必須爲每個級別的導航都這樣做。 – Harper 2010-09-23 23:57:19

0

這個功能看起來應該是框架中應該考慮到的東西;要指定這些參數似乎相當難以理解,因爲您必須爲每個級別的導航都這樣做。

爲什麼?返回是屬於瀏覽器的內容,以及歷史。它一直這樣,爲什麼框架需要處理呢?

你需要的不是標準。

此外,您有責任保持代碼乾燥。你一定可以處理它,你所擁有的所有重複就是你所調用的函數的名字。

+0

這與「返回」功能沒有任何關係。我用正確的解決方案編輯了我的帖子;你應該看看它 - 它可能會幫助你。 – Harper 2010-09-24 22:23:56

+0

@Harper在重新閱讀您的問題後,我發現您重複瀏覽器功能的原因是由於默認的腳手架視圖/這不是一個好的參數。關於鏈接,您可以使用RenderPartial和RenderAction非常相似,甚至可以用完整的視圖來完成。我認爲你已經看得更多了,因爲將模型數據傳遞給視圖就是你在其中做的任何事情。 – eglasius 2010-09-24 23:11:17