我并不精通MVC,尽管过去几天我一直在阅读大量的材料。现在,我需要创建一个只使用一个网页的Web项目。该网页将显示现有数据库中的数据,以及添加和编辑条目。有人告诉我使用MVC。虽然在我的研究中,在我看来MVC更适合大型项目。如何在我的单页项目中使用MVC?我在想像dbcontext - >存储库 - >控制器 - >模特 - >观点。这是正确的,还是有更有效的方法呢?
如果我不使用MVC,我可以使用什么?
编辑:在一个项目的项目中使用MVC的最佳方法是什么?
答案 0 :(得分:2)
是的你可以。这种任务有很多方法,我将其中两个命名。
MVC方法
MVC方法如下: 您将拥有一个包含所有输入逻辑和操作结果的控制器。
例如:
public class HomeController : Controller
{
public ActionResult index()
{
return view();
}
public ActionResult ContactUs()
{
return view();
}
public ActionResult About()
{
return view();
}
}
然后创建布局页面和视图(或部分视图)对于每个操作,然后在同一个控制器中进行路由,这样就可以创建一个仅更改布局内容的网页。
优点:
您在一个控制器中包含所有逻辑,因此您可以创建并轻松访问代码,因为您知道所有输入逻辑的位置。
您可以使用剃刀通过模型控制您的视图,允许您创建专为您的需求和属性设计的自定义控件,从而轻松连接您的服务器以获取/发布请求。
缺点
随着网站的增长,您的控制器可能会变大,从而创建一个“难以维护”的代码。您添加的页面越多,向家庭控制器添加的逻辑就越多,这使得控制器中的代码变得冗长,不可读并且很难轻松维护。
角度方法:
角度方法表明,你将在控制器中有一个动作开始 - 索引(又名主页):
public class HomeController : Controller
{
public ActionResult index()
{
return view();
}
}
然后,您将创建一个布局页面和html页面以在其中呈现,然后使用角度ui-router进行导航。
例如:
var myApp = angular.module('myApp', ["ngRoute"])
.config(function ($routeProvider) {
var baseUrl = $("base").first().attr("href");
$routeProvider.when('/',
{
templateUrl: baseUrl + 'Html/Home.html',
controller: 'myHomeCointroller'
});
$routeProvider.when('/About',
{
templateUrl: baseUrl + 'Html/About.html',
controller: 'myAboutController'
});
这样,您可以使用角度“位置”依赖关系进行导航,例如:
$location.path('/About');
在这个布局页面上创建布局页面和非常容易导航的系统。 布局页面只会根据每个html内容更改内容。
专业人士
您创建了一个非常灵活且易于维护的应用程序,它不会消耗大量的输入逻辑(控制器代码),并且将采用角度控制器驱动,从而创建一种非常简单的方法来修复您的代码。
缺点
你不能在html页面中使用razor,因此必须为你的服务器创建大量的ajax调用,这可能需要你编写一个web api或WCF来连接你的服务器以获取/发布数据。
您的逻辑将扩展到多个角度控制器而不是一个位置(例如,Home Controller中的所有逻辑),这可能需要时间来处理需要注意的小问题。
您可以选择决定采用哪种方法来处理MVC。
有很多方法可以与其他框架一起使用,但是再一次,它永远不会结束。
专注于你告诉你的任务,了解我告诉你的每一种方法的原则,并祝你好运。
阅读有关观点的材料:
Views and partial views in MVC
阅读有关角度ui-router的材料:
答案 1 :(得分:0)
如果只需要一个页面应用程序,则可以使用ASP.NET Core的SPA模板:Building Single Page Applications on ASP.NET Core with JavaScriptServices。
它们包括MVC ASP.NET +前端MVVM框架,如:Angular,Aurelia,Knockout或React。
其他选项:对ASP.NET Core使用Razor页面:Introduction to Razor Pages in ASP.NET Core:
Razor Pages是ASP.NET Core MVC的一项新功能,它可以进行编码 以页面为中心的场景更容易,更高效。