Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 605
  • Last Modified:

Loading another controller's view using MVC

Hi All,


I want to load another controller's view using MVC. I do it using something ike  return View(~/view/Controller/action);


Now this is a stringly typed view and I am using aspx pages to do that. When it loads, it says that Model is Null. How can I do this?
0
TheCommunicator
Asked:
TheCommunicator
  • 2
  • 2
3 Solutions
 
IrzanaCommented:
To load another controller's view, you need to call that controller's action. You can use RedirectToAction

and pass all the querystring parameters as route values
0
 
TheCommunicatorAuthor Commented:
can you give me an example?
0
 
IrzanaCommented:
0
 
P1ST0LPETECommented:
By default when MVC looks for a View, it first looks in \Views\[Controller_Directory]\ .
If MVC can't find the View there, it then looks in \Views\Shared\.

The Views\Shared folder is where you want to put Views that are being used by multiple controllers.

On the other hand, if you simply want to navigate to a different View that is outside the scope of your current controller, you need to do as Irzana posted in his/her first post above; that is, use the RedirectToAction method and pass along all parameters as route values.

To see an example of this - download the example project I put up for you in one of your previous questions:

(i.e. http://davisdevelopment.org/experts-exchange/tasks.zip)

Then go to the HomeController and add this method:

public ActionResult LogOn()
{
    LogOnModel model = new LogOnModel();
    string url = "www.google.com";

    return RedirectToAction("LogOn", "Account", new { @model = model, @returnUrl = url });
}

Then run the application and go to the following url /Home/Logon, and you will see that it brings you to Account/Logon.

On a side note, if you are trying to use "return View(view-name)" and you get an error saying Model is null, then the View you are trying to load must have a Model associated with it that it needs to fully populate it's content.  So you need to find out what that model is and pass it to the view using "return View(view-name, model)".
0
 
TheCommunicatorAuthor Commented:
Hi Guys,

Instead of doing that you have suggeste, i ended up doing something like below:

return View("~/,,,", Model)

Open in new window


That actually seemed to me like a simple solution.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now