2012-04-09 48 views
1

我在一年內還沒有完成MVC2(或任何MVC),雖然這個工作,我想確保它是最好的方法。MVC2 HTML鏈接 - 這是正確的,還是有更好的方法?

我有一個「飛濺」頁面,允許用戶選擇他們想要的工作;接口,事件,參數或任務。的HTML是:

<a href="/Interfaces/Index"> 
    <div id="homeInterfaces" class="homeLinks"> 
     <h1>Interfaces</h1> 
     <h2>Create, Edit or Delete Interfaces</h2> 
    </div> 
</a> 
<a href="/Tasks/Index"> 
    <div id="homeTasks" class="homeLinks"> 
     <h1>Tasks</h1> 
     <h2>Create, Edit or Delete Tasks</h2> 
    </div> 
</a> 
<a href="/Parameters/Index"> 
    <div id="homeParameters" class="homeLinks"> 
     <h1>Parameters</h1> 
     <h2>Create, Edit or Delete Parameters</h2> 
    </div> 
</a> 
<a href="/Events/Index"> 
    <div id="homeEvents" class="homeLinks"> 
     <h1>Events</h1> 
     <h2>Create, Edit or Delete Events</h2> 
    </div> 
</a> 

的聯繫工作,並進入相應的頁面,但不管是什麼原因,我不知道這是否是去了解它的正確方法。我有每個控制器,每個索引視圖的正確文件夾。我不認爲我應該使用Html.ActionLink,但也許還有別的我應該使用的。有什麼想法嗎?謝謝。

+0

我不知道爲什麼這可能是錯的。不要擔心什麼是正確的,只是創造產品,如果你擔心某件事要問一個具體的問題。 – 2012-04-09 20:08:27

+0

你可以改善你的標題對他人更有用嗎?現在是「這是正確還是有更好的方法?」這不會給未來的用戶任何線索,這個問題是否會幫助他們。 – 2012-04-09 20:20:10

+0

@RaymondChen - 這樣更好嗎? – XstreamINsanity 2012-04-09 20:22:15

回答

2

是的,你應該使用這些幫手。這將確保您生成的鏈接使用適當的路由,如果您對URL進行任何操作或部署到非根路徑(即/

將來您的生活將變得更加輕鬆您的情況下,最簡單的解決方案是用@Url.Action替換URL。我會使用Html.ActionLink,因爲Html.ActionLink不允許您輕鬆鏈接比簡單文本更復雜的內容(例如,您的html)。

<a href="@Url.Action("Index", "Interfaces")"> 
    <div id="homeInterfaces" class="homeLinks"> 
    <h1>Interfaces</h1> 
    <h2>Create, Edit or Delete Interfaces</h2> 
    </div> 
</a> 

如果您沒有使用剃鬚刀,請先切換到該選項。這很值得。或者放下@標誌並添加一些<%= ... %>

正如@MichalFran指出的那樣,如果它現在正在工作,您隨時可以隨時開始遵循此建議,並重新審視您在何時/如果需要在路上行事時所做的工作。

+0

+1我還喜歡在href屬性中使用Url.Action,而不是Html.ActionLink。更清楚呈現的HTML輸出將如何。 – danludwig 2012-04-09 20:14:00

+0

@danludwig感謝您的評論,這促使我解決'Url.Action 鏈接' – 2012-04-09 20:15:32

+0

謝謝,這似乎更合適。我將不得不調查剃刀看看它有什麼優勢。再次感謝。 – XstreamINsanity 2012-04-09 20:21:25

1

此答案不是獨立的。我發佈它作爲我喜歡的Michael Haren's answer的補充。

我想添加爲「思考」的另一件事是T4MVC。我非常喜歡它,因爲它可以幫助你擺脫@Url.Action@Html.Action中更多的「魔術串」。例如,以邁克爾的示例代碼:

<a href="@Url.Action("Index", "Interfaces")"> 
    ... 

使用T4MVC,你可以擺脫魔法字符串,並渲染路徑URL像這樣:

<a href="@Url.Action(MVC.Interfaces.Index())"> 

然後,如果你重新命名InterfacesController或重命名/更改您的Index()操作方法的簽名,該視圖將無法編譯,而不是在運行時得到404

另一個很酷的事情是,你可以將參數傳遞給路由引擎,如果你是在調用操作方法:

public ActionResult ById(int entityId) { ... } 

<a href="@Url.Action(MVC.Interfaces.Index(Model.EntityId))"> 
    ... 

我不知道爲什麼越來越多的人不張貼這個!

+0

+1我也喜歡T4MVC的東西。我有點驚訝,它不是內置於MVC(但?) – 2012-04-09 20:40:24

相關問題