添加视图并显示它?

时间:2014-08-27 15:03:50

标签: c# asp.net-mvc asp.net-mvc-routing

我对MVC完全不熟悉。现在我正在尝试在文件夹Sample(在Views的文件夹下)创建一个View。我右键单击Sample文件夹并选择“Add View”,然后将视图名称命名为 Test 。创建视图后,我输入以下代码:

<!DOCTYPE html>
<html>
<head>
    <title>Sample View</title>
</head>
<body>
    <p>
        Test
    </p>
</body>
</html>

构建。然后我尝试在浏览器中导航地址http://localhost:24694/Sample/Test。但浏览器上写着“无法找到资源”。为什么?我还有Sample文件夹中的其他cshtml文件(由其他人生成),它们运行正常。例如,在Sample文件夹下有一个名为“Message.cshtml”的文件,我可以轻松导航地址http://localhost:24694/Sample/Message。有什么我应该补充的吗?

3 个答案:

答案 0 :(得分:2)

3步骤

1 - 定义路线

routes.MapRoute("Test", "test", 
                new { controller = "NameOfController", <- In your case TestController
                      action = "Index", <- Name of action in controller returning view
                      parameter = "parameterName - leave empty if no params needed"
                    });

2 - 创建控制器

因此,如果您按照上述方法调用路径Test和视图Test,则需要创建名为 TestController 的控制器。由于您之前做过的路由配置(RouteConfig.cs)

,MVC会自动将这些播放到一起

3 - 查看

在您的情况下,您只需确保视图返回一些内容。

很容易。祝你好运。

答案 1 :(得分:1)

ASP.NET MVC基于routing而不是像asp.net webforms这样的文件系统。在内部结构之后,视图应位于ASP.NET MVC应用程序模板的Views文件夹中,如Controllers应保留在Controllers文件夹中。它不是必需的,但默认情况下是从asp.net mvc框架设置的。

在你的Controller(类)中,你可以有一些Actions(方法),它们可以返回从ActionResult类型派生的视图,图像,文件等实现。这些操作可以使用控制器基类中的View方法返回视图。默认情况下,如果您有这样的控制器,asp.net mvc将在'Views`文件夹和与Controller名称相同的文件夹中搜索视图(.cshtml或.aspx文件):

public class ProductController : Controller
{
   public ActionResult Index()
   {
      return View();
   }
}

它会在Views/Product/Index.cshtml中找到一个视图并为您呈现。我建议您在http://asp.net/mvc

中阅读更多内容

答案 2 :(得分:1)

你不能使用

http://localhost:24694/Sample/Test

导航到视图,因为您只能通过控制器访问视图。请按照以下步骤操作

  1. 首先在controllers文件夹中创建一个新控制器并将其命名为'SamplController'。
  2. 默认情况下会有一个名为Index()的操作方法。
  3. 在'SampleController'
  4. 中创建一个名为'Test'的新Action方法
  5. 现在右键单击“测试”操作方法,然后单击“添加视图”。它将添加一个新视图,在Views文件夹中命名为'Test.cshtml'。你可以使用它。如果要将此View放在其他文件夹中,则需要修改“Test”操作方法的return语句。例如,您在Views文件夹中创建了一个文件夹“MyViews”,并在那里移动了“Test.cshtml”。现在你在'Test'动作方法中的return语句将是这样的
  6.   

    返回视图(“〜Views / Sample / MyViews / Test.cshtml”);

    而不是

      

    返回View();

    现在使用

    http://localhost:port/Sample/Test
    

    它将创建一个'Sample'Controller的新实例,并将调用'Test'动作方法。此方法将返回指定的视图。我希望它会有所帮助:)