【问题标题】:How does a MVC 3 View get binded to a Controller ActionMVC 3 视图如何绑定到控制器操作
【发布时间】:2012-10-25 23:27:31
【问题描述】:

这更像是对 MVC 3 工作原理的“架构理解”。我真的很想知道 MVC 如何知道为给定的控制器操作调用哪个视图。我可以猜测,当我们使用 Visual Studio 为控制器操作创建视图时,它会将这些绑定存储在项目的某种文件中,对吗?

提前致谢。 马塞洛·米亚拉 里约热内卢/巴西

【问题讨论】:

    标签: asp.net-mvc-3 razor view controller


    【解决方案1】:

    这是使用"Convention over Configuration"的思想完成的。

    如果你使用一个没有视图的随机动作,你可以看到它实际上是在尝试一堆不同的约定,寻找一个匹配:

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

    它在 Views/ControllerNameViews/Shared 中查找与操作名称匹配的视图文件(.aspx、.ascx、.cshtml 或 .vbhtml 扩展名) > 文件夹。

    未找到视图“SomeActionWithNoView”或其主视图,或者没有视图引擎支持搜索到的位置。搜索了以下位置:

    ~/Views/Home/SomeActionWithNoView.aspx

    ~/Views/Home/SomeActionWithNoView.ascx

    ~/Views/Shared/SomeActionWithNoView.aspx

    ~/Views/Shared/SomeActionWithNoView.ascx

    ~/Views/Home/SomeActionWithNoView.cshtml

    ~/Views/Home/SomeActionWithNoView.vbhtml

    ~/Views/Shared/SomeActionWithNoView.cshtml

    ~/Views/Shared/SomeActionWithNoView.vbhtml


    可以使用 /Views 根目录中的 _ViewStart.cshtml 设置默认视图布局:

    @{
        Layout = "~/Views/Shared/MyDefaultLayout.cshtml";
    }
    

    可以根据需要在各个视图中删除或更改。

    【讨论】:

    • 嗯...我明白了。但是,在那种情况下(没有任何表来映射它们),视图如何知道它应该在什么布局上呈现(例如,视图如何知道在 ~/Views/Shared/_Layout.cshtml 上呈现)?跨度>
    • @MarceloMyara 布局是手动设置的——没有约定。通常,您使用 _ViewStart.cshtml 来指定通用布局,然后根据需要在各个视图中覆盖它。
    • 是的。好的,现在这一切都在我脑海中浮现!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    相关资源
    最近更新 更多