0

我正在尝试学习 mvc。假设我的索引页面中有两个链接。我希望当我单击第一个链接时,我希望 MyPageOneController 应该调用并且 MyPageOne 视图应该显示。

同样我希望当我点击第二个链接时,我希望 MyPageTwoController 应该调用并且 MyPagetwo 视图应该显示。

我尝试这样做,但出现错误。在这里,我给出了我的控制器和视图文件夹结构的图片。看看吧。

在此处输入图像描述

我有一个名为 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 和 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");,但它没有用。如何提及根视图文件夹路径?

谢谢

4

3 回答 3

2

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

Views -> MyPageOne -> MyPageOne.cshtml
Views -> MyPageTwo -> MyPageTwo.cshtml
于 2013-08-20T11:14:16.160 回答
0

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

我建议您看一下ASP.NET MVC 约定。您将 .chtml 文件放置在错误的视图文件夹中。按照惯例,动作的默认视图应该像这样放置:Views\< Controller Name >\< Action Name >.chtml

于 2014-07-12T14:20:22.920 回答
0

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

于 2013-08-20T11:13:42.230 回答