如何从一个控制器导航到另一个控制器MVC

时间:2013-08-20 11:09:29

标签: asp.net-mvc

我正在努力学习mvc。假设我的索引页面中有两个链接。我希望当我点击第一个链接然后我想要调用MyPageOneController并显示MyPageOne视图。

就像我想要的那样,当我点击第二个链接然后我想要调用MyPageTwoController并显示MyPagetwo视图。

我尝试这样做,但得到错误。在这里,我正在给我的控制器&查看文件夹结构。看看吧。

enter image description here

我有一个名为MyPageOne的视图位于主文件夹中,另一个视图位于不同的文件夹中,名为test。

这里我给出了我的完整代码

Index.cshtml代码

@{
    ViewBag.Title = "Home Page";
}

<h2>@ViewBag.Message</h2>
<p>
    @Html.ActionLink("Click on link one", "MyPageOne", "MyPageOne")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    @Html.ActionLink("Click on link two", "MyPageTwo", "MyPageTwo")
</p>

MyPageOne.cshtml代码

@{
    ViewBag.Title = "MyPageOne";
}

<h2>Welcome to MyPageOne !</h2>

MyPageTwo.cshtml

@{
    ViewBag.Title = "MyPageTwo.cshtml";
}

<h2>Welcome to MyPageTwo !</h2>

我创建了两个名为MyPageOneController.cs&amp;的控制器。 MyPageTwoController.cs

MyPageOneController.cs中的

代码

namespace MvcApplication4.Controllers
{
    public class MyPageOneController : Controller
    {
        //
        // GET: /MyPageOne/

        public ActionResult MyPageOne()
        {
            return View();
        }

    }
}

MyPageTwoController.cs中的代码

namespace MvcApplication4.Controllers
{
    public class MyPageTwoController : Controller
    {
        //
        // GET: /MyPageTwo/

        public ActionResult MyPageTwo()
        {
            return View();
        }

    }
}

所以只是指导我出了什么问题。我检查当我点击第一个链接然后右控制器方法被调用但没有视图没有得到渲染。我在哪里弄错了。请指导我在我的代码中需要更改的内容,以加载由我创建并存储在两个不同文件夹中的两个视图。感谢

我得到了解决方案

public ActionResult MyPageOne()
        {
            return View("../Home/MyPageOne");
        }

 public ActionResult MyPageTwo()
        {
            //return View();
            return View("../Test/MyPageTwo");
        }

这样我重定向到视图和完成工作。 你可以告诉我如何以编程方式指定视图文件夹下的内容。 我使用代码return View("~/Home/MyPageOne");但它没有用。如何提及root视图文件夹路径??

感谢

3 个答案:

答案 0 :(得分:2)

看起来您的观点位置错误。尝试将您的视图重定位到以下视图文件夹中:

Views -> MyPageOne -> MyPageOne.cshtml
Views -> MyPageTwo -> MyPageTwo.cshtml

答案 1 :(得分:0)

您有错误文件夹中的视图,“测试”应为“MyPageOne”,或者您需要编写自定义路径

答案 2 :(得分:0)

(我只是盯着ASP.NET MVC 5.但我想我可以回答这个问题。;))

我建议你看一下 ASP.NET MVC约定。您将.chtml文件放在错误的视图文件夹中。通常,操作的默认视图应如下所示: Views \&lt;控制器名称&gt; \&lt;操作名称&gt; .chtml