[Asp.Net Core]MVC开发&解读Razor混编

Posted 厦门德仔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Asp.Net Core]MVC开发&解读Razor混编相关的知识,希望对你有一定的参考价值。

MVC开发

1.什么是MVC?

V-视图------呈现给用户看到的内容(表现层)
C-控制器----控制业务逻辑计算,调用服务,选择返回什么内容,可以返回视图,JSON,字符串等等
M-视图模型—用作控制器和视图之间传递数据的载体

2.修改视图,增加了html代码,不能马上生效,那么办?必须要编译后方可生效的问题,如何解决?

            #region 解决修改视图内容,必须编译后方可生效的问题
            //1.Nuget安装:Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
            //2.配置使用services.AddRazorPages().AddRazorRuntimeCompilation();
            services.AddRazorPages().AddRazorRuntimeCompilation();
            #endregion

Razor混编


@using DeZai.Net5Demo.Utility.RazorGrammar
@using DeZai.Net5Demo.Interface;

@
    ViewData["Title"] = "Index";


@implements CustomInterface

@functions 
    //实现接口
    public void Show()
    
        Console.WriteLine("实现接口");
    





@inject ITestServiceA iITestServiceA
@
    iITestServiceA.Show();
    var intResult = Model;


@*添加特性*@
@attribute [CustomInfoAttribute]  //因为是个类文件,所以也可以增加特性


@functions	
    public string GetHello()
    
        return "functions----Hello";
    


<div>From method: @GetHello()</div>

<h1>this is Second Page</h1>

@*<h1>this is Second Page</h1>
    <h1>this is Second Page</h1>
    <h1>this is Second Page</h1>
    <h1>this is Second Page</h1>
    <h1>this is Second Page</h1>
    <h1>this is Second Page</h1>*@

@*@for (int z = 0; z < 10; z++)
    
        <h1>this is Second Page @z</h1>
    *@

@int i = 3; int m = 4;   @*单行*@  <!--单行-->

@
    //多行
    ViewBag.Title = "this is Second Page";
    int k = 5;

@
    <h1>k=@k</h1>


@*行内  要么不要大括号  如果有大括号---内部的后台代码也需要@符号*@
<h3>
    行内:@
        @ViewBag.Title
    
</h3>

<p>@DateTime.Now</p>
<p>@DateTime.IsLeapYear(2016)</p>

@*显式 Razor 表达式*@
<br />
<p>显式 Razor 表达式: @(DateTime.Now - TimeSpan.FromDays(7))</p>

@
    int index = 123;

@index

<br />

@("<span>Hello World</span>")//如果想要在页面上输初一个代码尖括号

<br />
@*代码块*@
@
    //可以声明变量+做计算+声明方法
    var quote = "The future depends on what you do today. - Mahatma Gandhi";


<p>@quote</p>

<br />

@
    quote = "Hate cannot drive out hate, only love can do that. - Martin Luther King, Jr.";

<p>@quote</p>

<br />
@*在代码块中,使用标记将本地函数声明为用作模板化方法:*@
@
    void RenderName(string name)
    
        <p>Name: <strong>@name</strong></p>
    

    RenderName("模板化方法:Mahatma Gandhi");
    RenderName("模板化方法:Martin Luther King, Jr.");

***********************************************
<br />
@*隐式转换*@
@
    var inCSharp = true;
    <p>Now in HTML, was in C# @inCSharp</p>


<br />
@*带分隔符的显式转换*@
@
    var people = "德仔教育";

@for (var x = 0; x < people.Length; x++)

    var person = people[x];
    <text>Name: @person</text>//标识为字符串文本


<br />
<br />

@*显示行转换*@
@for (var j = 0; j < people.Length; j++)

    var person = people[j];
    @:Name: @person


@
    List<int> intlist = new List<int>();

@foreach (var item in intlist)




<br />
<br />
@*if*@
@
    int y = 3;

@if (y > 2)

    <a href="www.baidu.com">这里是个百度的链接</a>


@for (int l = 0; l < 10; l++)

    <a href="https://david.blog.csdn.net">这是德仔官网</a> //html
    if (l == 0)  //这个是后台代码
    
        <a href="www.baidu.com">这里是百度链接 @l</a>
    
    else if (l == 2)
    
        <a href="https://david.blog.csdn.net/">这里是德仔官网链接 @l</a>
    
    else
    
        <a href="https://david.blog.csdn.net/">这里是德仔官网链接 @l</a>
    
    <br>



@for (int l = 0; l < 5; l++)

    @switch (l)
    
        case 1:
            <a href="https://david.blog.csdn.net/">这里是德仔官网链接 @l</a>
            break;
        case 2:
            <a href="https://david.blog.csdn.net/">这里是德仔官网链接 @l</a>
            break;
        case 3:
            <a href="https://david.blog.csdn.net/">这里是德仔官网链接 @l</a>
            break;
        case 4:
            <a href="https://david.blog.csdn.net/">这里是德仔官网链接 @l</a>
            break;
        case 5:
            <a href="https://david.blog.csdn.net/">这里是德仔官网链接 @l</a>
            break;
        default:
            break;
    
    <br>

<br />
<br />

<!--后台代码内部如何写html-->
@
    //多行
    ViewBag.Title = "Index";
    //闭合的html标签
    <p>闭合的html标签</p>
    @:这里没有闭合标签

    <text>
        在这里,随便写html
        <a href="https://david.blog.csdn.net/#/Home">这里是德仔教育官网</a>
    </text>


@*<div>CustomText:@CustomText</div>*@
<br />
<!--使用partial-->

<p>等于webform的ascx</p>
<p>Html.RenderPartial 在指定位置添加一个view,返回void 需要放入大括号 </p>
@
    Html.RenderPartial("PartialPage", "这里是Html.RenderPartial");

<br />
@
    await Html.RenderPartialAsync("PartialPage", "这里是Html.RenderPartial");

<br />
<p>Html.Partial 返回的是字符串,放入当前位置</p>
@Html.Partial("PartialPage", "这里是Html.Partial")

<br />
@await Html.PartialAsync("PartialPage", "这里是Html.Partial")
<!--使用Action页-->
<br />
<p>Html.Action 返回的是字符串,放入当前位置,需要经过action的处理</p>

@Html.ActionLink("这里是一个ActionLink", "ActionLink", "Second")



以上是关于[Asp.Net Core]MVC开发&解读Razor混编的主要内容,如果未能解决你的问题,请参考以下文章

[MVC&Core]ASP.NET Core MVC 视图传值入门

[MVC&Core]ASP.NET Core MVC 视图传值入门

创建一个 ASP.NET Core2.0 应用,并搭建 MVC 框架

ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程

简述关于ASP.NET MVC与.NET CORE 的区别

零基础ASP.NET Core MVC插件式开发