多页面,单控制器,如何在mvc中设置?

Posted

技术标签:

【中文标题】多页面,单控制器,如何在mvc中设置?【英文标题】:Multiple pages, single controller, how to set it up in mvc? 【发布时间】:2016-04-13 09:21:15 【问题描述】:

我有一个“主页”控制器,它处理基本的主页、关于、课程、联系页面。有多个课程可用,每个都有自己的页面,我想知道引用这些页面的最佳方法。我可以将它们创建为附加页面,并为每个页面添加一个 actionresult 到主控制器。所以课程的网址是 home/course1。想必还有比这更好的方法。

理想情况下,我希望将各个课程页面放在视图文件夹内的单独文件夹中,并将它们的 URL 设为 /home/courses/course1。谁能解释使用 MVC 组织这些页面的最佳方法?

【问题讨论】:

你使用的是什么框架或语言! 您期待什么“更好”的方法? 我正在使用 asp.net MVC 5,我希望有一些比简单地列出控制器中的所有单独页面更简洁的东西。例如,在控制器中标记 Courses 操作的某种方式,以便它响应每个单独页面的链接,而不会将它们全部列为单独的操作? 听起来您没有使用数据库,只是静态 .cshtml 页面(每门课程一个),对吗?如果是这样,那么除了为每个 .cshtml 页面编写手动控制器代码之外,您几乎无能为力,因为 MVC 不会自己“看到”或“发现”这些。另一种方法 - 几乎所有网站都使用,并且有充分的理由 - 是使用带有 Course 表的数据库,并创建代码和页面来维护和显示该表的内容。 【参考方案1】:

所以它是这样的:所有课程都会有一个页面,所有课程页面都是部分视图,现在主页上会有一个 div,每当用户点击其中一个课程名称时..将触发 ajax 请求并返回所需的部分并使用返回的内容填充 div。你可以给 Courses 的所有链接一个通用类,就像这样:

.<a class="couseTrigger" data-source="@Url.Action("Name of Partialview action," name of controller")"> ------ Script ----- $('.couseTrigger').click(function() var _this = $(this); var url = _this.data('source'); --then make the ajax request to this url pvariable and retrun the partial view. );

【讨论】:

【参考方案2】:

如果您有多个课程,请避免为这些课程创建多个网页。而是将每门课程的内容存储在数据库中,并通过某些参数检索特定的课程内容并将其绑定到网页。为每门课程创建网页是不可行的。假设你有 100 门课程,你会创建 100 个网页吗?

【讨论】:

以上是关于多页面,单控制器,如何在mvc中设置?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JSP 页面中从 Java 类中设置 hashmap 的值以便在控制器中进一步使用

如何使用 asp.net mvc 中的标记在 Select2 输入中设置默认值

如何在 cakePHP 的控制器中设置分页器页面

在 Asp.Net MVC 中设置“主页”

如何在控制台应用程序中设置默认连接字符串?

在 MVC 中设置 403 错误页面