博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.Net MVC 学习心得 之 View
阅读量:6516 次
发布时间:2019-06-24

本文共 4312 字,大约阅读时间需要 14 分钟。

一、使用View Data

首先要在Controller里加代码:

public class ProductController : Controller    {        //        // GET: /Product/        public ActionResult Index()        {            ViewData["Message"] = "Hello World";            return View();        }    }

然后在View里添加代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage
" %>
Index

Index

<%=ViewData["Message"] %>

内容就被传递了,但这样由于传入的值可能是任何类型的,所以你要自己做类型转换了,哈哈。

ViewData.Model是可以让你有个强类型的

ViewData.Model = _dataModel.ProductSet.ToList(); 

 

二、预防javascript注入攻击

默认是预防的,如果不想使用看下面的代码:

[ValidateInput(false)]  [AcceptVerbs(HttpVerbs.Post)]  public ActionResult Create([Bind(Exclude="Id")]Product productToCreate)  {      if (!ModelState.IsValid)          return View();        try      {          _dataModel.AddToProductSet(productToCreate);          _dataModel.SaveChanges();            return RedirectToAction("Index");      }      catch      {          return View();      }  }

主要是那个[ValidateInput(false)]

三、可替换的View Engine

Asp.net Mvc里的View Engine是可以替换的,默认的engine是叫做Web Forms View Engine.现在已经有几个开源的View Engine了

可以到这里找找看,一个网站可以同时使用几个View Engine,可以在Global.asax里配置,使用不同的扩展名来区分使用不同View Engine 比如:.aspx页面就使用Web Forms View Engine.

我们也可以自定义一个View Engine,从VirtualPathProviderViewEngine 继承出一个类就可以了。

using System.Web.Mvc;    namespace MvcApplication1.MyViewEngines  {      public class SimpleViewEngine : VirtualPathProviderViewEngine      {          public SimpleViewEngine()          {              this.ViewLocationFormats = new string[] { "~/Views/{1}/{0}.simple", "~/Views/Shared/{0}.simple"};              this.PartialViewLocationFormats = new string[] { "~/Views/{1}/{0}.simple", "~/Views/Shared/{0}.simple" };          }            protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath)          {              var physicalPath = controllerContext.HttpContext.Server.MapPath(viewPath);              return new SimpleView(physicalPath);          }            protected override IView CreatePartialView(ControllerContext controllerContext, string partialPath)          {              var physicalPath = controllerContext.HttpContext.Server.MapPath(partialPath);              return new SimpleView(physicalPath);          }      }  }
 
在Global.asax里这样写
protected void Application_Start()  {      RegisterRoutes(RouteTable.Routes);        ViewEngines.Engines.Add(new SimpleViewEngine());  }

然后自己写一个view的页面类:

namespace MvcApplication1.MyViewEngines  {      public class SimpleView : IView      {          private string _viewPhysicalPath;            public SimpleView(string viewPhysicalPath)          {              _viewPhysicalPath = viewPhysicalPath;          }                   #region IView Members            public void Render(ViewContext viewContext, TextWriter writer)          {              // Load file              string rawContents = File.ReadAllText(_viewPhysicalPath);                // Perform replacements              string parsedContents = Parse(rawContents, viewContext.ViewData);                // Write results to HttpContext              writer.Write(parsedContents);          }           #endregion            public string Parse(string contents, ViewDataDictionary viewData)          {              return Regex.Replace(contents, "\\{(.+)\\}",m => GetMatch(m, viewData));          }            protected virtual string GetMatch(Match m, ViewDataDictionary viewData)          {              if (m.Success)              {                  string key = m.Result("$1");                  if (viewData.ContainsKey(key))                  {                      return viewData[key].ToString();                  }              }              return string.Empty;          }            }  }

定义一个Controller:

using System.Web.Mvc;    namespace MvcApplication1.Controllers  {      public class SimpleController : Controller      {          public ActionResult Index()          {              ViewData["message"] = "Hello World!";              return View();          }      }  }

而页面可以写成:Views\Simple\Index.simple

 

    Index Simple View        

{message}

主要看{message}被解析出来了

 

注:上面的代码是从别人书里炒来的,不好意思

在View里有个HtmlHelper的东西 以后再写。

转载于:https://www.cnblogs.com/dotLive/archive/2009/03/09/1407073.html

你可能感兴趣的文章
NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
查看>>
Netflix如何节省92%视频编码成本?
查看>>
ios兼容iphonex刘海屏解决方案
查看>>
HBuilder使用夜神模拟器调试Android应用
查看>>
就是要你懂TCP -- 握手和挥手
查看>>
Andrew Ng机器学习公开课笔记 -- Regularization and Model Selection
查看>>
《Python游戏编程快速上手》一1.3 如何使用本书
查看>>
《Android游戏开发详解》——第1章,第1.3节声明和初始化变量
查看>>
[Google Guava] 排序: Guava强大的”流畅风格比较器”
查看>>
《Visual Studio程序员箴言》----1.2 滚动与导航
查看>>
《JVM故障诊断指南》之1 —— JVM概览与介绍
查看>>
Processing编程学习指南2.7 Processing参考文档
查看>>
架构师速成-架构目标之伸缩性\安全性
查看>>
用机器学习流程去建模我们的平台架构
查看>>
执行可运行jar包时读取jar包中的文件
查看>>
linux下ExtMail邮件使用及管理平台
查看>>
马哥linux课后作业2
查看>>
linux中iptables设置自建dns服务器的端口
查看>>
常见的正则表达式
查看>>
TP5+PHPexcel导入xls,xlsx文件读取数据
查看>>