Question

I just create an empty MVC2 project. Add an Area and a controller and a view to it. Include T4MVC files into the project and run the custom tool.

Everything is generated except the ViewNames for the views in the Area.

My tree structure:

Areas

  • MyArea
    • Controllers
      • MyTestController.cs
    • Views
      • MyTest
        • MyTestView.aspx
      • MySecondTestView.aspx

As you can I have views directly in Views folder and also in folders named by the controller..

Did anyone experienced something like this?

Was it helpful?

Solution

T4MVC definitely supports accessing the views in an Area. I just tried the following on a new project:

  • Create an Area named 'Stuff'
  • Create a Foo controller in there
  • In that controller, right click on Index() and ask it to generate a view
  • Rerun the T4MVC custom tool

After that, I'm able to write either:

    public virtual ActionResult Index()
    {
        return View(Views.Index);
    }

or

    public virtual ActionResult Index()
    {
        return View(MVC.Stuff.Foo.Views.Index);
    }

OTHER TIPS

ASP.NET MVC 2 works, out of the box, using naming conventions to link views to controller actions. These conventions allow it find default views for actions in a controller.

For example, MyTestController.cs will have actions. Lets say it only has one, Test.

By default, MVC framework will look for a view called Test.aspx in a folder MyArea/Views/MyTest

If it doesn't find it there, it will look for the view Test.aspx under /MyArea/Views/Shared

Then it will look in /Views/Shared.

[I might be missing one location, am sure there are 4, but can't remember the other one... Anyway, the principle stands]

If it can't find Test.aspx in any of those locations, it will complain.

You seem to be fighting these conventions. And that will lead you into all kinds of complications. So it is best to read a good book on MVC and really learn the basics of how MVC is designed to work.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top