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

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

2014-10-10 12:58 204 查看
控制器

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"]中的代码,这样easy遭到跨站脚本的攻击,不够安全,所以这里是弹出一个对话框吗,对话框内容为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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: