ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

ASP.NET MVC

2021-10-10 09:06:23  阅读:195  来源: 互联网

标签:ASP MVC html 视图 占位 Html 内容 NET 路由


目录

基础




MVC设计模式

MVC应用程序分为三个主要组件即:视图(View) 控制器(Controller)模型(Model)
M:Model主要是存储或者是处理数据的组件
V:View 是用户接口层组件。主要是提供html模板并将Controller里获取的数据显示到页面上
C:Controller 处理用户交互,负责处理业务,并获取数据装入Model中,然后交给视图 
占位符

原理

内容:
内容:

实体类

EF

EF查询的实体其实就是实体代理类对象
内容:
内容:
内容:
内容:
内容:

ORM

内容:
内容:

视图 

原理

View方法来源于Controller类
占位符

书写规则

注释
Razor还提供了一种新的服务器段代码注释,可以即注释C#代码,同时可以注释HTML代码,@**@
@*
    using Apps.Common;
    这是一个注释
    <b>这个是注释</b>
*@
占位符

@的用途

mvc的一些@的方法来写前台页面,不太适用大部分页面,
因为前端基本上都是会引用一下定义好的框架结构,
所以@只能定义到个别字段标签,传一个参数值等

它被定义为Razor服务器代码块的开始符号@或者@.....{}后面写C#后台语句。例如:
1.在视图里给变量赋值:
@{string productName = "圣诞节快乐";}
<span>@productName</span>
2.输出日期
<span>@DateTime.Now.ToString("yyyy-MM-hh")</span>
3.循环语句
@for (int i = 0; i < 10; i++)
        {
            <span>@i  ==<%: i%></span>
            i++;
            int a = i + 1;
        }
<ul>
 @foreach(){}
</ul>

输出特别符号
1.输出@符号:@@
2.输出Email地址:Razor模板会自动识别出Email地址,所以不需要我们进行任何的转换。
而在代码块中,只需要使用@:Tom@gmail.com 即可。@:表示后面的内容为文本。
@:字符序列”来显式指明内容块的开始。@:序列表明该行后面的内容应该被视为内容块:
3.输出HTML内容(不包含标签):有两种方法,
第一种:
IHtmlString html = new HtmlString("<font color='red'>文本</font>");
@html;
第二种:
string html = "<font color='red'>文本</font>";
@Html.Raw(html);

Razor视图引擎
<text>标签是一个Razor特殊处理的元素。
Razor将<text>块的内部内容视为内容块,不呈现包含那些内容的<text>标签
(这意味着只呈现<text>内部内容,不呈现标签本身)
这使呈现没有被HTML元素包装的多行内容块变得方便
@if(p.UnitysInstock){
     <text>
         this is a demo
           @Date.Now
     </text>
}

在前台页面用后台代码输出文本
@{
Response.Write(this.GetType().Assembly.Location);
}
占位符

强类型视图

强制指定强类型
例如:@model P01FirstMVC.Models.Student
将类作为object通过view返回 
后台代码:

public ActionResult Modify(int id)
{
Models.Student stu =(from s in db.Students......)
return View(stu);
}

视图代码:

<input type=”text” name=”Name” value=”@Model.Name”/> 

强类型方法自动读取Model属性对象所属类的DisplayName特性 
为实体类属性设置DisplayName特性

[DisplayName(“登录名”)]
public string LoginName{get;set;}

在视图页面上显示某个属性的标签说明

@Html.LabelFor(model=>model.LoginName)

上面生成的html源码

<label for=”LoginName”>登录名</label>

EditorFor方法根据属性的DataType生成对应的html标签
@Html.Editor/@Html.Display 可以通过读取特性值生成HTML
[DataType(DataType.MultilineText)]
public string Name{get;set;}
在视图页面上显示某个属性的input 标签
@Html.EditorFor(model=>model.Name)
@Html.ValidateFor(s=>s.Name) //验证
生成Html源码
<textarea id=”name”></textarea>
DataType的命名空间 using system.ComponentModel.DataAnnotations;

内容:视图通过html生成html控件(Helper类):
Helper:是为了方便View的开发而产生,
HtmlHelper-强类型方法+请类型视图生成html控件 
hmtl 表单:
方式1:推荐:
@using(Html.BeginForm(“HandleForm”,”Home”))
{
}

方式2:
@Html.BeginForm(“Login”,”User”,FormMethod.Post,new {id = “form2”})
Input type=”text”/>
@{Html.EndForm();}


内容:html 文本框 文本域
@Html.TextBox(“txtName”,”我是文本框”,new {style=”border:1px solid #0094ff;”});
@Html.TextArea(“txtContent”,”我是文本域”);


内容:html 超链接
<a href =”@Url.Action(“ModifyPage”,”Stu”)/${Id}”>修改</a>
HtmlHelper的演变
普通调整首页超级链接为:<a href="/home/index">
当路由改变时候则需要很多超级链接那需要改动很多地方
根据路由改变也不受影响
<a href="<%=Url.Action(" index","home")%>">首页</a>
没有智能感知,调试不方便则应运而生了
Html.Action("Home","Index") 
在视图上请求其他Action
@Html.Action("Part");


内容:html 下拉标签
html Lable
Html radio
内容:
内容:
内容:

分布视图

内容:
内容:

异步视图

内容:
内容:

路由 

路由配置

占位符
扩展阅读:MVC涉及RouteTable自定义路径 - 烟雨楼台^浮云往事 - 博客园
占位符

路由映射

ASP.NET MVC4 设置路由的命名空间 namespace
routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                namespaces: new[] { "MvcApplication1.Controllers" }
            );
占位符

URL

提交的url是url: '../../Account/checkLogin',可以找到控制器
如果是url: '../名称/Account/checkLogin',就找不到
为啥,因为编译只编译控制器方法,不编译文件名
占位符

路由约束

本质:(对路由的约束就是对url的限制)
路由约束-正则表达式
占位符

RouteDebugger插件

占位符
占位符

路由原理(理论)

在全局配置文件中-已经配置一个路由过滤器-为第7个事件注册了路由方法




在Application_Start中向静态路由表注册了路由数据,在管道第7个事件方法中使用了该路由表数据
占位符
占位符
占位符
占位符
在第7个事件中根据URL获取路由对象 
占位符
占位符
占位符

 

 

 

 

 

跳转

占位符
占位符

区域

占位符
占位符

过滤器

占位符
占位符

其他

占位符
占位符

标签:ASP,MVC,html,视图,占位,Html,内容,NET,路由
来源: https://blog.csdn.net/u011122112/article/details/120621929

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有