单页的MVC?

时间:2017-10-03 04:13:28

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

我并不精通MVC,尽管过去几天我一直在阅读大量的材料。现在,我需要创建一个只使用一个网页的Web项目。该网页将显示现有数据库中的数据,以及添加和编辑条目。有人告诉我使用MVC。虽然在我的研究中,在我看来MVC更适合大型项目。如何在我的单页项目中使用MVC?我在想像dbcontext - >存储库 - >控制器 - >模特 - >观点。这是正确的,还是有更有效的方法呢?

如果我不使用MVC,我可以使用什么?

编辑:在一个项目的项目中使用MVC的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

是的你可以。这种任务有很多方法,我将其中两个命名。

MVC方法

MVC方法如下: 您将拥有一个包含所有输入逻辑和操作结果的控制器。

例如:

 public class HomeController : Controller
 {
    public ActionResult index()
    {
       return view();
    }

    public ActionResult ContactUs()
    {
        return view();
    }

    public ActionResult About()
    {
        return view();
    }

}

然后创建布局页面和视图(或部分视图)对于每个操作,然后在同一个控制器中进行路由,这样就可以创建一个仅更改布局内容的网页。

优点:

  1. 您在一个控制器中包含所有逻辑,因此您可以创建并轻松访问代码,因为您知道所有输入逻辑的位置。

  2. 您可以使用剃刀通过模型控制您的视图,允许您创建专为您的需求和属性设计的自定义控件,从而轻松连接您的服务器以获取/发布请求。

  3. 缺点

    随着网站的增长,您的控制器可能会变大,从而创建一个“难以维护”的代码。您添加的页面越多,向家庭控制器添加的逻辑就越多,这使得控制器中的代码变得冗长,不可读并且很难轻松维护。

    角度方法:

    角度方法表明,你将在控制器中有一个动作开始 - 索引(又名主页):

     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的材料:

    Angular routing explanation

答案 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的一项新功能,它可以进行编码   以页面为中心的场景更容易,更高效。