1

私は1年以上MVC2(または実際にはMVC)を実行していません。これは機能しますが、それが最善の方法であることを確認したいと思います。

ユーザーが作業したいものを選択できる「スプラッシュ」ページがあります。インターフェイス、イベント、パラメータ、またはタスク。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を使用する必要はないと思いますが、他に使用する必要があるものがあるかもしれません。何かご意見は?ありがとう。

4

2 に答える 2

2

はい、これらにはヘルパーを使用する必要があります。これにより、生成されたリンクが適切なルートを使用するようになります。これにより、URLで何か気の利いたことをしたり、ルート以外のパスにデプロイしたりした場合に、将来の作業がはるかに楽になります/

あなたの場合、最も簡単な解決策はURLを。に置き換えること@Url.Actionです。単純なテキスト(HTMLなど)よりも複雑なコンテンツを簡単にリンクできないHtml.ActionLinkため、これを使用します。Html.ActionLink

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

Razorを使用していない場合は、最初にRazorに切り替えてください。価値がある。@または、記号をドロップして、いくつか追加します<%= ... %>

ただし、@ MichalFranが指摘しているように、現在機能している場合は、いつでも将来このアドバイスに従い始めて、将来必要になったときに、すでに行ったことを再確認できます。

于 2012-04-09T20:11:20.113 に答える
1

この答えはスタンドアロンではありません。マイケル・ハーレンの答えの補足として投稿しています。

私が「思考」として付け加えたいもう一つのことはT4MVCです。@Url.Actionとの両方でより多くの「マジックストリング」を取り除くのに役立つので、私はそれの大ファンです@Html.Action。たとえば、Michaelのサンプルコードを見てください。

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

T4MVCを使用すると、魔法の文字列を取り除き、次のようにルートURLをレンダリングできます。

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

次に、アクションメソッドの名前を変更したり、名前を変更しInterfacesControllerたり、署名を変更したりすると、実行時に404を取得する代わりに、ビューのコンパイルに失敗しますIndex()

もう1つの優れた点は、アクションメソッドを呼び出しているかのようにパラメータをルーティングエンジンに渡すことができることです。

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

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

なぜもっと多くの人がこれについて投稿しないのか分かりません!

于 2012-04-09T20:31:28.920 に答える