asp.net Mvc中实现在View页面中嵌入公用动态数据,实现方法为:include(包含动态页面数据)

asp.net Mvc中实现在View页面中嵌入公用动态数据,实现方法为:include(包含动态页面数据)

 

   最近两个月正在由工厂模式转型asp.net Mvc开发,刚刚处理完一个类似.net中UserControl(用户控件,以下简称"uc")完全可以实现的功能(由于考虑到uc对网页请求数据的性能问题,产品经理建议在.net中使用include功能)。于是今天研究了一下在mvc中使用include动态显示共有数据,期间发现了个问题,值得大家一起讨论一下:

    这是共有数据的页面我把它建在views中:

SafetyLevel.aspx:

 

<label class="status">
        <%=ViewData["Level"]%></label>

 

这是前台数据显示页面,同样也在views中:

 

Index.aspx:

 

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>我的首页</title>   
    <link href="../../css/public.css" type="text/css" rel="stylesheet" />
    <link href="../../css/index.css" rel="stylesheet" type="text/css" />
    <link href="../../css/model.css" type="text/css" rel="stylesheet" />

    <script type="text/javascript" src="../../js/gx-jquery142.js"></script>

    <script type="text/javascript" src="../../js/Checkform.js"></script>

</head>
<body>
    <form action="/User/Index" method="post" name="form1" enctype="multipart/form-data">

 

<div class="mainCRCMLTop">
                                <div class="mainCRCMLTLeft">
                                    <img src="../../img/UserHeader.jpg" />
                                </div>
                                <div class="mainCRCMLTRight">
                                    <h1>
                                        木古古</h1>
                                    <ul>
                                        <li class="Myprice">当前金币: 20<span class="MPright"><a href="#">充值</a><a href="我的账户.html">账户</a></span></li>
                                        <li class="Mysafe">账号安全:

                                         <!-- #Include File="SafetyLevel.aspx" -->                                            
                                         <%=ViewData["Level"]%>                                    
                                        </li>
                                    </ul>
                                </div>
                            </div>    

 </form>
</body>
</html>    

 

 

这里是:controller相关代码:

 

private UserService userservice;//声明用户service
        private UserStaticService staticservice;//声明用户静态表底层处理类

        public UserController()
        {
            userservice = new UserService();
            staticservice = new UserStaticService();
        }

        public ActionResult Index()
        {
            ViewData["Level"] = GetSafetyLevel();
            return View();
        }

        public ActionResult SafetyLevel()
        {
            long userId = CookieHelper.GetLoginUserId();
            UserStatic userstatic = staticservice.Get(userId);
            ViewData["Level"] = "";
            int level = Convert.ToInt32(userstatic.Extend3);//安全级别数由绑定项数规定(绑定项数(手机绑定、邮箱绑定、密保设置))
            if (level >= 0)
            {
                if (level == 0)
                {
                    ViewData["Level"] = "<span class='empty'>安全等级(无)</span>";
                }
                else if (level == 1)
                {
                    ViewData["Level"] = "<span class='feeble'>弱</span>";
                }
                else if (level == 2)
                {
                    ViewData["Level"] = "<span class='middle'>中</span>";
                }
                else
                {
                    ViewData["Level"] = "<span class='strong'>强</span>";
                }
            }
            return View();
        }

        #region 返回安全级别数
        public string GetSafetyLevel()
        {
            long userId = CookieHelper.GetLoginUserId();
            UserStatic userstatic = staticservice.Get(userId);
            string safetylevel = "";
            int level = Convert.ToInt32(userstatic.Extend3);//安全级别数由绑定项数规定(绑定项数(手机绑定、邮箱绑定、密保设置))
            if (level >= 0)
            {
                if (level == 0)
                {
                    safetylevel = "<label class='status'><span class='empty'>安全等级(无)</span></label>";
                }
                else if (level == 1)
                {
                    safetylevel = "<label class='status'><span class='feeble'>弱</span></label>";
                }
                else if (level == 2)
                {
                    safetylevel = "<label class='status'><span class='middle'>中</span></label>";
                }
                else
                {
                    safetylevel = "<label class='status'><span class='strong'>强</span></label>";
                }
            }
            return safetylevel;
        }
        #endregion   

 

 

说明:账号安全级别处为公用部分(<!-- #Include File="SafetyLevel.aspx" --> ) ,本来以为在controller中将SafetyLevel.aspx的  ViewData["Level"]  然后将  <!-- #Include File="SafetyLevel.aspx" --> 放入Index.aspx页面的公用部分就可以实现类似用户控件的效果了,可事实不然。Index.aspx页面根本无法读取到  SafetyLevel.aspx    页面中的数据,后来调试发现,如果我把public ActionResult SafetyLevel()方法中的代码考到public ActionResult Index()方法中,刷新Index.aspx页面竟然拿到了共用部分的数据,及此时SafetyLevel.aspx 的代码页面中也能读取到数据了。于是我把public ActionResult SafetyLevel()方法中的代码提取出来写了个返回字符串的方法public string GetSafetyLevel(),这样的只要哪个action方法对应得views页面需要显示共用部分的数据,就可以将ViewData["Level"] = GetSafetyLevel()  其放入action方法中。对应的页面如果需要用Include实现,可以这样写:“<!-- #Include File="SafetyLevel.aspx" --> ”  ,如果不需要中间页面的话,也可以这样编写:“<%=ViewData["Level"]%> ” 公用动态数据部分。

注:功能是实现了,可能会有些地方不太适应,如果大家有什么更好的方法,希望提出来我们交流共享一下。呵呵...

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值