当前位置: 首页 > news >正文

.Net mvc总结

namespace WebMVCDemo.Controllers
{
    /*
     * 1.控制器名称为Home,控制器名称具有Controller后缀
     */
    public class HomeController : Controller
    {
        // GET: Home
        public ViewResult Index()
        {
            return View();
        }
    }
}

控制器中返回ViewResult对象,在调试时,出现以下错误:
在这里插入图片描述
 该错误消息是很有帮助的。它不仅解释了MVC未找到该动作方法的视图,还显示出查找了哪些地方。这是MVC约定的另一个很好的例子:视图是通过命名约定与动作方法相关联的。这个动作方法称为”Index”,控制器称为”Home”,从上图可以看出,MVC试图在”Views”文件夹中查找具有这一名称的不同文件。
 此时需要在view文件夹下创建相对应的文件进行视图渲染即可

使用布局页创建的视图


@{
    ViewBag.Title = "First";
}

<h2>First</h2>


不使用布局页创建的视图


@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div> 
    </div>
</body>
</html>

随后,VisualStudio将在Views\Home文件夹中创建一个名称为”Index.cshtml”的视图文件。这是MVC框架的另一个约定:视图被放置在Views文件夹中,文件夹的结构是与其关联的控制器名称相对应的。index.cshtml中的代码如下:
相比于正常的html文件格式,多了以下部分:

@{
Layout = null;
}

这个是由Razor视图引擎进行解释的表达式,Razor引擎处理视图内容并生成发送给浏览器的HTML。这是一个简单的Razor表达式,它告诉Razor未选用布局,布局类似于发送给浏览器的HTML模板。
在视图文件中添加以下代码:


@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div> 
        <p>Hello c# mvc</p>
    </div>
</body>
</html>

打开调试,出现下图即视图渲染成功
在这里插入图片描述
总结:在最初编辑Index动作方法时,它返回的是一个字符串值。这意味着MVC除了把这个字符串值传递给浏览器之外,未做其他事情。
现在Index方法返回了一个ViewResult对象,MVC框架渲染了一个视图并返回了它所产生的HTML,可是代码中并未告诉MVC应该使用哪一个视图,因此它会运用命名约定自动寻找一个视图。该约定是,视图具有动作方法的名称,并包含在以控制器命名的文件夹之中:Views/Home/Index.cshtml。

相关文章:

  • .Net MVC + EF搭建学生管理系统
  • Git使用的一些问题
  • sql中单字段模糊查询多个匹配字段
  • 循环遍历List中for循环与foreach区别与使用
  • GitHub Page个人博客中评论功能
  • 钉钉中一些api的使用
  • sql server中存储过程的使用
  • sql中报错:“从数据类型 varchar 转换为 bigint 时出错”解决
  • c#中Excel转为DataTable对象
  • SQL Server Always Encrypted加密使用
  • .Net中wcf服务生成及调用
  • sql中视图的使用
  • VB中Http请求测试
  • springboot集成SqlServer的坑
  • HttpClient请求Https证书问题解决
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • CSS中外联样式表代表的含义
  • ES6之路之模块详解
  • es的写入过程
  • JDK 6和JDK 7中的substring()方法
  • Making An Indicator With Pure CSS
  • Ruby 2.x 源代码分析:扩展 概述
  • session共享问题解决方案
  • Shell编程
  • SpringCloud集成分布式事务LCN (一)
  • V4L2视频输入框架概述
  • ViewService——一种保证客户端与服务端同步的方法
  • webpack4 一点通
  • 搞机器学习要哪些技能
  • 官方解决所有 npm 全局安装权限问题
  • 解决iview多表头动态更改列元素发生的错误
  • 聊聊directory traversal attack
  • 批量截取pdf文件
  • 移动端唤起键盘时取消position:fixed定位
  • 用简单代码看卷积组块发展
  • 最近的计划
  • k8s使用glusterfs实现动态持久化存储
  • ​【已解决】npm install​卡主不动的情况
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • ${ }的特别功能
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (zhuan) 一些RL的文献(及笔记)
  • (多级缓存)缓存同步
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (翻译)terry crowley: 写给程序员
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (六)软件测试分工
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)appium-desktop定位元素原理
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复