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代码当做一个整体进行处理,而不必拆开它再拼接回来。


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


       


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


                       

           



                   

       

目录
相关文章
|
5月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
190 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
6月前
|
设计模式 前端开发 数据库
深入理解MVC设计模式:构建高效Web应用程序的基石
【7月更文挑战第4天】在软件工程领域,设计模式是解决常见问题的一系列经过验证的方法。其中,Model-View-Controller(MVC)设计模式自诞生以来,便成为了构建用户界面,特别是Web应用程序的黄金标准。MVC通过将应用程序逻辑分离为三个核心组件,提高了代码的可维护性、可扩展性和重用性。本文将深入探讨MVC设计模式的原理,并通过一个简单的代码示例展示其应用。
244 0
|
7月前
|
前端开发 JavaScript Java
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
|
4月前
|
前端开发 安全 Java
技术进阶:使用Spring MVC构建适应未来的响应式Web应用
【9月更文挑战第2天】随着移动设备的普及,响应式设计至关重要。Spring MVC作为强大的Java Web框架,助力开发者创建适应多屏的应用。本文推荐使用Thymeleaf整合视图,通过简洁的HTML代码提高前端灵活性;采用`@ResponseBody`与`Callable`实现异步处理,优化应用响应速度;运用`@ControllerAdvice`统一异常管理,保持代码整洁;借助Jackson简化JSON处理;利用Spring Security增强安全性;并强调测试的重要性。遵循这些实践,将大幅提升开发效率和应用质量。
75 7
|
4月前
|
前端开发 测试技术 开发者
MVC模式在现代Web开发中有哪些优势和局限性?
MVC模式在现代Web开发中有哪些优势和局限性?
|
5月前
|
开发者 前端开发 Java
架构模式的诗与远方:如何在MVC的田野上,用Struts 2编织Web开发的新篇章
【8月更文挑战第31天】架构模式是软件开发的核心概念,MVC(Model-View-Controller)通过清晰的分层和职责分离,成为广泛采用的模式。随着业务需求的复杂化,Struts 2框架应运而生,继承MVC优点并引入更多功能。本文探讨从MVC到Struts 2的演进,强调架构模式的重要性。MVC将应用程序分为模型、视图和控制器三部分,提高模块化和可维护性。
51 0
|
5月前
|
Java 开发者 前端开发
Struts 2、Spring MVC、Play Framework 上演巅峰之战,Web 开发的未来何去何从?
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活配置备受青睐,但开发者常遇配置错误、类型转换失败、标签属性设置不当及异常处理等问题。本文通过实例解析常见难题与解决方案,如配置文件中遗漏`result`元素致页面跳转失败、日期格式不匹配需自定义转换器、`&lt;s:checkbox&gt;`标签缺少`label`属性致显示不全及Action中未捕获异常影响用户体验等,助您有效应对挑战。
107 0
|
5月前
|
Java 前端开发 Apache
Apache Wicket与Spring MVC等Java Web框架大PK,究竟谁才是你的最佳拍档?点击揭秘!
【8月更文挑战第31天】在Java Web开发领域,众多框架各具特色。Apache Wicket以组件化开发和易用性脱颖而出,提高了代码的可维护性和可读性。相比之下,Spring MVC拥有强大的生态系统,但学习曲线较陡;JSF与Java EE紧密集成,但在性能和灵活性上略逊一筹;Struts2虽成熟,但在RESTful API支持上不足。选择框架时还需考虑社区支持和文档完善程度。希望本文能帮助开发者找到最适合自己的框架。
56 0
|
5月前
|
存储 前端开发 数据库
神秘编程世界惊现强大架构!Web2py 的 MVC 究竟隐藏着怎样的神奇魔力?带你探索实际应用之谜!
【8月更文挑战第31天】在现代 Web 开发中,MVC(Model-View-Controller)架构被广泛应用,将应用程序分为模型、视图和控制器三个部分,有助于提高代码的可维护性、可扩展性和可测试性。Web2py 是一个采用 MVC 架构的 Python Web 框架,其中模型处理数据和业务逻辑,视图负责呈现数据给用户,控制器则协调模型和视图之间的交互。
45 0
|
6月前
|
开发框架 缓存 NoSQL
基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用
基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用