多页面,单控制器,如何在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 的值以便在控制器中进一步使用