asp.net mvc是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net mvc是啥?相关的知识,希望对你有一定的参考价值。

MVC架构是"Model-View-Controller"的缩写,中文翻译为"模型-视图-控制器"。
百科已经有很好的说明了
http://baike.baidu.com/view/739359.htm?fr=ala0_1_1

ASP.NET的Model还可以分成 BLL -> DAL
还有LZ说的是ASP.NET的MVC 不是JAVA的 大家都知道asp.net是事件驱动机制为主的
但这种机制会有很多坏处 例如运行速度慢(相对) 不得不为了控制刷新而参入各种技术(如AJAX) ASP.NET的MVC 用微软的话说 就是摒弃了事件机制 摒弃了runat="server"控件 其中利弊总之众说纷纭 不过.NET专业的各位可以在JAVA的各位面前自豪的说:"我们的MVC性能比JAVA还好!"

自己写的 有点慢了哈哈 已经有人贴了一大片

http://edu.codepub.com/2009/0422/3206.php
再给LZ贴一个快速入门 可以更详细的了解一下 并动手试试没有aspx.cs的asp.net吧 :D
参考技术A mvc是什么MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。 参考技术B M = Model(模型层,包括数据层等)
V = View(视图层,包括表示层.JSP等)
C = Control(控制层,包括Servlet,JavaBean等)
MVC,是一种开发模式,把你的项目设计成三个层.更易于开发和各层的分工,层次清晰,套用这个模式去做项目更容易方便一些!
参考技术C MVC把一个web应用分成了三个部分:model view和controller。ASP.NET MVC框架提供了一个可以代替asp.net web窗体的基于mvc的应用。 ASP.NET MVC概述·mvc的优点: 1.通过把项目分成model view和controller,使得复杂项目更加容易维护。 2.没有使用view state和服务器表单控件,可以更方便的控制应用程序的行为 3.应用程序通过controller来控制程序请求,可以提供丰富的url重写。 4.对单元测试的支持更加出色 5.在团队开发模式下表现更出众 ASP.NET MVC概述·web窗体的优点: 1.采用事件驱动模式来控制应用程序请求,由大量服务器控件支持 2.采用页面控制机制,可以为单个页面添加事件处理函数。 3.使用view state和服务器端页面,使管理页面状态信息更加轻松。 4.对人数较少的想使用服务器端控件的开发团队,使用起来更加方便 5.开发起来比mvc模式要轻松简单一些 ASP.NET MVC概述mvc框架特色: 1.分离任务(输入逻辑,业务逻辑和显示逻辑),易测性和默认的测试驱动组件。所有mvc用到的组件都是基于接口并且可以被mock对象测试到,你可以不必在asp.net进程中运行controller就可以使用测试。使得测试更加快速和简捷。 2.可扩展的简便的框架。mvc框架被设计用来更轻松的移植和定制功能。你可以加入自己的视图引擎,url重写策略。重载action方法等。mvc也支持Dependency Injection (DI) and Inversion of Control (IOC) 3.强大的url重写机制让你更方便的建立容易理解和可搜索的url。url可以不包含任何文件扩展名,并且可以重写url使其对搜索引擎更加友好。 4.可以使用asp.net现有的页面标记、用户控件、模板页。你可以使用嵌套模板页,嵌入表达式<%=%>,声明服务器控件、模板,数据绑定、定位等等。 5.对现有的asp.net程序的支持,mvc让你可以使用如窗体认证和windows认证、url认证、组管理和规则、输出、数据缓存、session、profile 、health monitoring、配置管理系统、provider architecture特性。
[编辑本段]ASP.NET MVC 2.0
Scott Gu在博客中宣布ASP.NET MVC 2正式版发布,该版本适用于Visual Studio 2008及基于ASP.NET 3.5平台的Visual Web Developer 2008 Express。 在2010年4月12日发布的VS 2010正式版与Visual Web Developer 2010正式版中内置对ASP.NET MVC 2的支持,不需要再另外安装。 离ASP.NET MVC 1发布还不到1年,目前为止,已经有近100万的开发者下载并使用。 ASP.NET MVC 2是ASP.NET MVC的又一次重大更新,兼容ASP.NET MVC 1,和以前一样,ASP.NET MVC 2源代码完全开放。ASP.NET MVC 2源代码完全开放。 ASP.NET MVC 2可以与ASP.NET MVC 1并存,也就是说在同一台机器上,可以有的程序用ASP.NET MVC 1,有的程序用ASP.NET MVC 2。 将ASP.NET MVC 1程序升级至ASP.NET MVC 2,请参考:Upgrading an ASP.NET MVC 1.0 Application to ASP.NET MVC 2。VS 2010会提供“升级向导”自动将你的ASP.NET MVC 1程序升级至ASP.NET MVC 2。

将 Wyam 嵌入 asp.net 核心 MVC 解决方案的正确方法是啥?

【中文标题】将 Wyam 嵌入 asp.net 核心 MVC 解决方案的正确方法是啥?【英文标题】:What is the correct way to embed Wyam into an asp.net core MVC solution?将 Wyam 嵌入 asp.net 核心 MVC 解决方案的正确方法是什么? 【发布时间】:2019-10-10 23:16:15 【问题描述】:

将 Wyam 嵌入到 asp.net 核心 MVC 解决方案中的正确方法是什么?

由于项目需要高级身份验证,我已将其嵌入到 MVC 中。 我目前将它嵌入到 MVC 控制器中,使用控制器读取生成的 html 文件并通过视图呈现它。

文件以下列方式提供

public IActionResult Index()

    return ServeMarkdownPage("index");


[Route("pageName")]
public IActionResult ServeMarkdownPage([FromRoute]string pageName)

     if (!System.IO.File.Exists($"HtmlOutput//pageName.html"))
     
         return View("Error");
     

     var content = System.IO.File.ReadAllText($"HtmlOutput//pageName.html");

     return View("MarkdownPage", new MarkdownPageViewModel  HtmlContent = content );

视图只是将html内容输出到页面中。

@Html.Raw(Model.HtmlContent)

Markdown 生成是通过引擎实例的实例化并将其转换为 html 来完成的。 在这种情况下,waym 配方似乎被忽略了。

var engine = new Wyam.Core.Execution.Engine();

engine.FileSystem.InputPaths.Add(new DirectoryPath("Markdown"));
engine.FileSystem.OutputPath = new DirectoryPath("HtmlOutput");

engine.Pipelines.Add(new Pipeline(
    "DocumentationPages",
    new ReadFiles("**/*.md"),
    new FrontMatter(new Yaml()),
    new Markdown(),
    new WriteFiles(".html")));

var docsRecipe = new Docs();

docsRecipe.Apply(engine);

这可以以更好的方式完成吗?配方是否正确调用?

【问题讨论】:

刚刚在文档wyam.io/docs/usage/embedding 中看到了这一点。 Once the engine is configured, execute it with a call to Engine.Execute(). This will start evaluation of the pipelines and any output messages will be sent to the configured trace endpoints. 【参考方案1】:

根据文档

https://wyam.io/docs/usage/embedding

虽然 Wyam 通常从命令行应用程序执行,但它只是围绕核心库的一个薄包装,您可以将其包含在自己的应用程序中。核心 Wyam 库在 NuGet 上以 Wyam.Core 的形式提供。将其包含在应用程序中后,您需要创建一个 Wyam.Core.Execution.Engine 类的实例。

要配置引擎,请使用 Engine 类的属性。 ... ... 配置引擎后,通过调用Engine.Execute() 执行它。这将开始评估管道,任何输出消息都将发送到配置的跟踪端点。

因此,理想情况下,由于您要嵌入它,因此您必须手动启动生成过程。

您可以创建一个简单的助手来为您管理。

public static class WyamConfiguration 
    public static void Embed(Action<Wyam.Core.Execution.Engine> configure) 
        // you will need to create an instance of the Wyam.Core.Execution.Engine class
        var engine = new Wyam.Core.Execution.Engine();
        // configure the engine
        configure(engine);
        // Once the engine is configured, execute it with a call to Engine.Execute()
        // This will start evaluation of the pipelines and any output messages will 
        // be sent to the configured trace endpoints.
        engine.Execute();
    

然后从你的 Startup.cs

调用它

例如

WyamConfiguration.Embed(engine => 
    engine.FileSystem.InputPaths.Add(new DirectoryPath("Markdown"));
    engine.FileSystem.OutputPath = new DirectoryPath("HtmlOutput");

    engine.Pipelines.Add(new Pipeline(
        "DocumentationPages",
        new ReadFiles("**/*.md"),
        new FrontMatter(new Yaml()),
        new Markdown(),
        new WriteFiles(".html")));

    var docsRecipe = new Docs();

    docsRecipe.Apply(engine);
);

【讨论】:

这个和问题里的代码基本一样。这里的问题是,引擎在添加管道之前执行,它想要加载不可用的 Razor 插件。我的实现的问题是它忽略了配方,会更新问题。【参考方案2】:

我花了几个小时才得到一些“不错”的东西。我想不出一个干净的方法来连接 Razor 依赖项,所以我只是抓住了 Wyam.Docs.Samson nuget 包(剃须刀文件和其他网络内容)的 contents 文件夹并将其转储到我的降价文件旁边

using System;
using Wyam.Common.IO;
using Wyam.Core.Execution;
using Wyam.Docs;

namespace ConsoleApp3

    class Program
    
        static void Main(string[] args)
        
            Wyam.Common.Tracing.Trace.AddListener(new System.Diagnostics.TextWriterTraceListener(Console.Out));
            var engine = new Engine();
            engine.Namespaces.Add("Wyam.Docs"); // or razor will complain
            engine.FileSystem.InputPaths.Add(new DirectoryPath(@"C:\temp\wyam.test\content"));
            engine.FileSystem.InputPaths.Add(new DirectoryPath(@"C:\temp\wyam.test\input"));
            engine.FileSystem.OutputPath = new DirectoryPath(@"C:\temp\wyam.test\site");
            var dr = new Docs();
            dr.Apply(engine);
            engine.Execute();
        
    

我的项目文件如下,我认为我必须编辑 Wyam.Common 包,因为它没有正确注册。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Wyam.Common" Version="2.2.5" />
    <PackageReference Include="Wyam.Core" Version="2.2.5" />
    <PackageReference Include="Wyam.Docs" Version="2.2.5" />
  </ItemGroup>

</Project>

使用此设置 (VS2019) 生成的站点与使用 #recipe Docs 或其他任何名称运行 wyam cli 时的外观相同。

编辑:我想这并不能真正回答问题,但希望这有助于将解决方案放在一起。我计划在以控制台示例为起点的 Azure 函数中使用它。

【讨论】:

以上是关于asp.net mvc是啥?的主要内容,如果未能解决你的问题,请参考以下文章

VS 2015 ASP.NET 4 MVC 5 中的打字稿 - 设置和选择的工作组合是啥?

asp.net mvc是啥概念

ASP.NET MVC:@section 的用途是啥? [关闭]

Asp.Net Core MVC 中的 IViewLocationExpander.PopulateValues() 是啥

ASP.NET MVC 最好的视图引擎是啥?

分析 asp.net mvc 代码的最佳工具是啥? [关闭]