MVC中如何将后台封装好的Web控件发到前台视图显示

简介:              最近在用MVC开发的时候,师姐说所有用到的控件都要写在后台,然后从后台发到前台,这样就改变了以前把页面做死了的缺点。但是在实现的时候,遇到了点儿问题,如图:                       上面代码写了一个LinkButton,当调用这个静态方法后,会生成一个LinkButton的HTML代码,这个是比较简单的元件,如果,现在我要拼接一个功能齐全的DataGridView控件,要这个控件有分页栏,各种添加删除功能,CSS样式,为了复用我们的EasyUI元件库,估计这个HTML代码也得有半页多吧。


             最近在用MVC开发的时候,师姐说所有用到的控件都要写在后台,然后从后台发到前台,这样就改变了以前把页面做死了的缺点。但是在实现的时候,遇到了点儿问题,如图:



          


           上面代码写了一个LinkButton,当调用这个静态方法后,会生成一个LinkButton的HTML代码,这个是比较简单的元件,如果,现在我要拼接一个功能齐全的DataGridView控件,要这个控件有分页栏,各种添加删除功能,CSS样式,为了复用我们的EasyUI元件库,估计这个HTML代码也得有半页多吧。如果我要在每次遇到参数的时候都要截断字符,而且还要为代码里面的引号添加转义符,感觉挺麻烦的。那么,有没有一种不用截断字符的方式呢?



            现在回想一下我们以前学习三层的时候是如何在D层避免SQL注入的,我们引入了参数来避免拼接字符。按照这个思路,我们也可以在字符串里面定义参数,然后真正调用的时候,再用参数替代掉占位符。


                    在这里,我们使用String的一个Replace方法,然后利用字符串的替换,将参数传入。



             下面来看下Demo:

                    


                 首先说明下,因为是为了做Demo,所以很多分层上的东西都被我简化掉了,只求在逻辑上能实现。



                  下面是控制器类和生成简单form的代码:


                     需要仔细体会下replace方法,有没有感觉到这是另一种变量赋值的表达式?


        

    public class TestController : Controller
    {
       

        //建立一个控件的HTML代码
        public String ConvertSingleForm(String singleFormID, String SingleForm_table_ID, String method)//参数为formID,tableID,form的提交方式
            //上面参数都是字符串,用来取代html代码中的属性值
        {
            //建立控件的HTML字符串,其中,所有引号都用"代替;
                    //用"代替有两个原因:
                        //1,在后面replace的时候进行转换
                        //2,"在html中是特殊字符,会被自动解析为引号

            String htmlSingleForm = @"
 <form id="singleForm" method="post" ><table id="SingleForm_table_ID" bgcolor="00FF99"><tr>
	    			<td>密码</td>
	    			<td>3455467547556634568568568643</td>
	    		</tr>
<tr>
	    			<td>密码</td>
	    			<td>3455467547556634568568568643</td>
	    		</tr>
</table></form>";

           htmlSingleForm = htmlSingleForm.Replace(""", "\"");   //转换引号
           htmlSingleForm = htmlSingleForm.Replace("singleForm", singleFormID);   //formID赋值
           htmlSingleForm = htmlSingleForm.Replace("SingleForm_table_ID", SingleForm_table_ID);//tableID赋值
           htmlSingleForm = htmlSingleForm.Replace("post", method);  //form提交方式赋值


            return htmlSingleForm;//返回

        }



        public ActionResult Index()
        {
             
      
          // ViewBag.form1 = htmlConvert.ConvertSingleForm("singleForm", "234", "post");

           ViewBag.form1 = ConvertSingleForm("singleForm", "234", "post");//把一个form控件装入ViewBag中,然后传到视图

           return View();


        }

    }



        当调用控制器中的index方法后,会返回Index视图,下面是Index视图中代码:


   

 @if (ViewBag.form1!= null)
{
    @Html.Raw(ViewBag.form1.ToString())  //解析成HTML代码显示在页面上
}

     利用html的Raw方法,将字符再解析成html代码。




         在有了这个Demo后,我们只需把生成控件的所有HTML代码放到一个字符串里面,然后用Ctrl+f查找到所有引号,将它替换成&quot,之后将做好的字符放到String或者StringBuilder中,在方法中写好变量的替换就ok了。


              这样,我们就将生成控件的HTML代码当做一个整体进行处理,而不必拆开它再拼接回来。


         这么做虽然有好处,但也留下了隐患,这个以后再说。


       


            小结:思考无数种解决方案的过程比得到一个解决方案更有意思。


                       

           



                   

       

目录
相关文章
|
4天前
|
SQL 存储 C#
C# Web控件与数据感应之 TreeView 类
C# Web控件与数据感应之 TreeView 类
|
4天前
|
SQL 存储 Oracle
C# Web控件与数据感应之 CheckBoxList 类
C# Web控件与数据感应之 CheckBoxList 类
|
4天前
|
SQL 存储 Oracle
C# Web控件与数据感应之 Control 类
C# Web控件与数据感应之 Control 类
|
4天前
|
SQL 存储 Oracle
C# Web控件与数据感应之 ListControl 类
C# Web控件与数据感应之 ListControl 类
|
9天前
|
设计模式 前端开发 Java
19:Web开发模式与MVC设计模式-Java Web
19:Web开发模式与MVC设计模式-Java Web
19 4
|
17天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
25天前
|
网络架构 Python
Flask路由与视图:构建你的第一个Web应用
【4月更文挑战第15天】Flask是Python的Web框架,其核心是路由和视图。路由通过`@app.route()`装饰器定义,将URL映射到视图函数。视图函数处理请求并返回响应。动态路由允许URL包含可变部分,如`&lt;username&gt;`,将参数传递给函数。本文通过示例展示了如何创建显示待办事项列表的Web应用,包括定义路由、视图、使用模板以及运行应用。这为基础的Flask应用开发提供了基础。
|
28天前
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
33 3
|
1月前
|
存储 前端开发 Java
理解MVC架构模式:Java Web开发的设计理念
【4月更文挑战第3天】MVC架构模式在Web开发中广泛应用于构建可维护和扩展的应用。它将应用程序分为模型、视图和控制器三部分,增强代码模块化和重用。模型处理数据逻辑,视图负责用户界面,而控制器协调二者。MVC优点包括高内聚、低耦合、易于测试、扩展和维护。在Java Web开发中,可通过Servlet、JSP或Spring框架实现MVC。理解并运用MVC是Java Web开发者的关键技能。
理解MVC架构模式:Java Web开发的设计理念
|
1月前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南