• MVC razor 使用服务器控件


    MVC调用服务器控件 MVC是不提倡使用服务器控件的,一贯摒弃原有的postback的方式。但是有时候发现现有的MVC扩展确实还没有到达需要的目的,原来asp.net的控件很好用,但在MVC中自己编写又太过麻烦,往往还需要编写很多的JS代码,如果在MVC中也能适当的使用服务器控件就太好了,例如treeview。在网上看到一篇类似的思路,很不错,记录下来。
    
    在Controller中
    
            public ActionResult TreeViewDemo()
    
            {
    
                // 创建节点数据
    
                TreeView tw = new TreeView();
    
                tw.ID = "uiTree";
    
                tw.ShowLines = true;
    
                tw.ViewStateMode = ViewStateMode.Disabled;
    
    
    
    
                TreeNode node1 = new TreeNode();
    
                node1.Text = "One";
    
                node1.Value = "1";
    
                node1.NavigateUrl = "http://www.baidu.com";
    
                node1.Target = "_blank";
    
    
    
    
                TreeNode node2 = new TreeNode();
    
                node2.Text = "Two";
    
                node2.Value = "2";
    
    
    
    
                TreeNode node3 = new TreeNode();
    
                node3.Text = "Three";
    
                node3.Value = "3";
    
    
    
    
                TreeNode node = new TreeNode();
    
                node.Text = "Top";
    
                node.Value = "0";
    
    
    
    
                node.ChildNodes.Add(node1);
    
                node.ChildNodes.Add(node2);
    
                node.ChildNodes.Add(node3);
    
    
    
    
                tw.Nodes.Add(node);
    
    
    
    
                // 将treeview放入form中
    
                HtmlForm hf = new HtmlForm();
    
                hf.Controls.Add(tw);
    
                // hf.Attributes["runat"] = "server";
    
    
    
    
                // 再放入page中,最后进行文本转换
    
                Page page = new Page();
    
                string controlOutput = string.Empty;
    
                page.Controls.Add(hf);
    
    
    
    
                // 将page转换成html文本
    
                StringBuilder sb = new StringBuilder();
    
                using (StringWriter sw = new StringWriter(sb))
    
                {
    
                    using (HtmlTextWriter htw = new HtmlTextWriter(sw))
    
                    {
    
                        Server.Execute(page, htw, false);
    
                        controlOutput = sb.ToString();
    
                    }
    
                }
    
    
    
    
                // 传递到view中
    
                ViewBag.treeView = controlOutput;
    
                return View();
    
            }
    
    
    
    
    在View中就可以简单的调用了
    
    @Html.Raw(ViewBag.treeView)
    
    
    
    
    
    后来发现,在某些情况下会神奇的出现边框
    
    因此加上style
    
        #uiTree table td
    
        {
    
            padding: 0px;
    
            margin: 0px;
    
            border-color: #000000;
    
            border- 0px;
    
            border-style: solid;
    
        }
    
    效果还是不错的,比起自己扩展HtmlHelper要方便许多,但是这种方式还是有违MVC的初衷,但是我觉得适当的使用,而不滥用,应该在一定环境下还是可以用用的,毕竟节省了不少时间。


    来源:http://hi.baidu.com/jackeyrain/item/bb7dc41edec6b9fa9d778a1f

  • 相关阅读:
    Xcode-调试断点不能停在代码区终极解决方案
    iOS-修改Status Bar
    iOS-appStore发布流程
    iOS-Debug调试
    iOS-项目搭建
    iOS-UIButton-设置button标题和图片位置
    iOS-布局-Masonry-优先级
    intent 传参数
    五大布局
    execute、executeQuery和executeUpdate之间的区别
  • 原文地址:https://www.cnblogs.com/lmy213/p/3287502.html
Copyright © 2020-2023  润新知