2

私が間違っていなければ、ASP.NET MVC の規則では、コントローラー ビューに対して次のことを行う必要があるようです。

今日は、'Index' ビューを配置する 'Products' ディレクトリを作成します。次に、「ProductsController」を作成し、View を返す「Index」メソッドを作成します。引数なしで View() だけを返すと、'Index.aspx' ページが取得されます。これは、メソッドと同じ名前であるためです。

 public class ProductsController : Controller
    {
        public ActionResult Index()
        {
            return View();   // looks for Index.aspx in Products directory
        }
    }

これで問題ありません。しかし、私は 10 億の Index.aspx ページで終わることになり、私は決してファイルを閉じない人間の 1 人なので、気が狂ってしまうでしょう。

または、Products/Products.aspx を作成し、コントローラーを次のように変更することもできます。

 public class ProductsController : Controller
    {
        public ActionResult Index()  // my default routing goes to Index (from sample project)
        {
            return View("Products");
        }
    }

私はそれがどのように機能するかを理解しており、MVC 設計パターン内でこれを行うことは完全に問題ないことを理解しています。ハックなどではありません。

私の問題 (このPDC ビデオを聞いた後) は、MVC (または正しいフレーズが何であれ) ではカスタマイズ可能性よりも規則が優先されることです。

3 番目の方法が欠けているのか、それとも Visual Studio の 50 の [インデックス] タブで問題ないのでしょうか?

4

3 に答える 3

2

各コントローラーの既定のアクションに同じ名前を付けると、ルーティングが単純になります (global.asax を確認してください)。また、すべてのもの (製品、書籍、連絡先など) が同じ機能に対して同じ名前のアクション/ビューを使用すると、コードのナビゲートと理解がはるかに簡単になります。この規則の使用は、開発者間で一貫したコードを促進するため、チームの一員として作業する場合に特に重要です。

別の質問を見ているときに、codeplex の MVCContrib プロジェクトで SimplyRestfulRouting に出くわしましたこれはあなたにいくつかのアイデアを与えるかもしれません。

于 2009-01-22T23:05:27.900 に答える
2

アクションの後にメソッドに名前を付け、ビューに名前を付ける必要があると思います(意味があり、アクション間で共有されていない場合は、アクションと同じです)。Index実際にはわかりやすい名前ではないため、おそらくルーティングメカニズムを変更する必要があります。アクション名は、それが何をするかを表す必要があり (他のメソッドと同様)、ハードコードされたり、そのようなものであってはなりませんIndex。代わりにルーティングを編集する必要があります。

于 2009-01-21T23:27:47.233 に答える
0

それはただのパターンです。パターンを使用しますが、それが機能するようにしてください。個人的には、関数によってビューに名前を付けるのが好きで、インデックスがあまりないため、Index.aspx ページはあまりありません。

于 2009-01-21T23:18:04.537 に答える