您的位置:首页 > 编程语言 > ASP

MVC ASPX(webForm)视图引擎 <%:%> 与<%=%>的区别

2014-09-17 10:16 148 查看
控制器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcApplication2.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            ViewData["Script"] = "<script>alert('Dome')</script>";
            return View();
        }

    }
}

视图

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<!DOCTYPE html>

<html>
<head runat="server">
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        <!-- 如果用=号的话,就是原封不动的输出ViewData["Script"]中的代码,这样容易遭到跨站脚本的攻击,不够安全,所以这里是弹出一个对话框吗,对话框内容为Dome-->
        <%=ViewData["Script"] %>  

         <!--<%: %>相当于<%=Html.Encode(<script>alert('Dome')</script>) %> 推荐大家用冒号,这里输出的是<script>alert('Dome')</script>-->  
        <%:ViewData["Script"] %> 

        <!--假如说我现在就是想在前台页面输出一些Html标签,或一些代码,就想让它原封不动的去执行那段代码,比如说我现在就想给一个Div标签放到页面去,怎么办呢,以下三种方法都可以,而且不用=号更安全-->

        <%:Html.Raw("<div>我是div标签</div>") %>

        <%:new HtmlString("<p>我是p标签</p>") %>

        <%:new MvcHtmlString("<p>我也是p标签</p>") %>

       

    </div>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: