zoukankan      html  css  js  c++  java
  • WebApp MVC 框架的开发细节归纳

           在前文《WebApp MVC,“不一样”的轻量级互联网应用程序开发框架》介绍了WebApp MVC的技术实现以及如何使用,而在本章进一步归纳了使用框架开发的一些细节,也给我们在开发具体功能的时候提供一个正确的方法;共归纳了三点,具体内容如下:

    1.URL请求页面

    1)使用Nvelocity显示页面

    2)第一次页面加载中的Jqueryeasyui控件数据特殊处理

     

    2.Form表单提交数据

    1)action提交

    2)action提交前进行数据验证

    3)使用JQueryeasyui的form控件提交

     

    3.Ajax请求Json数据

    1)使用JqueryEasyUI控件请求数据

    2)使用Jquery中的Ajax方法请求数据

     

    讲解上面三点的同时结合实例代码,我们再回顾一下框架的执行流程图:

    实例01:URL请求页面


     

    1)浏览器输入URL:http://localhost:11032/Views/Test/API.aspx?cmd=test_test01

    2)TestController控制器代码

    public class TestController : AbstractJQBEController
        {
            public void test01()
            {
                ViewResult = ToView(@"ViewsTest	est01.htm");
            }
    }

    3)ViewsTest est01.htm页面代码

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    </head>
    <body>
    <p>实例01:URL请求页面</p>
    <p>hello world!</p>
    </body>
    </html>

    界面效果

     

    通过上面代码开发一个页面需要经过两步,Controller文件编写和View文件编写;首先编写一个控制器接收URL的请求,然后通过控制器中的ToView(@"ViewsTest est01.htm")方法返回View文件test01.htm ,而为什么ToView方法能够讲View页面现在出来使用了视图引擎Nvelocity,所以本节的内容是“使用Nvelocity显示页面”;接着我们看怎么动态数据显示在页面上。

    1)浏览器输入URL:http://localhost:11032/Views/Test/API.aspx?cmd=test_test01

    2)TestController控制器代码

    public class TestController : AbstractJQBEController
        {
            public void test01()
            {
                List<object> data = new List<object>();
                data.Add(new { id = 1, name = "选项1" });
                data.Add(new { id = 2, name = "选项2" });
                data.Add(new { id = 3, name = "选项3" });
                data.Add(new { id = 4, name = "选项4" });
                data.Add(new { id = 5, name = "选项5" });
    
                ViewData.Add("combox_data", ToJson(data));
    
                ViewResult = ToView(@"ViewsTest	est01.htm");
            }
        }

    3)ViewsTest est01.htm页面代码

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>无标题页</title>
    
        <script src="../../WebPlugin/jquery-1.8.0.min.js" type="text/javascript"></script>
        
        <link rel="stylesheet" type="text/css" href="../../WebPlugin/jquery-easyui-1.4.1/themes/bootstrap/easyui.css">
        <link rel="stylesheet" type="text/css" href="../../WebPlugin/jquery-easyui-1.4.1/themes/icon.css">
        <script src="../../WebPlugin/jquery-easyui-1.4.1/jquery.easyui.min.js" type="text/javascript"></script>
        <script src="../../../WebPlugin/jquery-easyui-1.4.1/locale/easyui-lang-zh_CN.js" type="text/javascript"></script>
        
    </head>
    <body>
    <p>实例01:URL请求页面</p>
    <p>hello world!</p>
    
    
    <script language="javascript">
    var v_data=$combox_data;
    </script>
    <p><input class="easyui-combobox" id="cb01" name="cc1" data-options="valueField:'id',textField:'name',data:v_data" style="200px;"></input></p>
    
    </body>
    </html>

    4)右键查看页面源代码

     

     

     

    实例02:Form表单提交数据


     

    1.通过表单的action提交数据

    1)浏览器输入URL:http://localhost:11032/Views/Test/API.aspx?cmd=test_test02

    2)TestController控制器代码

    public void test02()
            {
                ViewResult = ToView(@"ViewsTest	est02.htm");
            }
    
            public void test02_login()
            {
                string name= FormData["name"];
                string pass = FormData["pass"];
                ViewData.Add("name", name);
                ViewData.Add("pass", pass);
    
                ViewResult = ToView(@"ViewsTest	est02_loginsuccess.htm");
            }

    3)界面代码

    Test02.htm

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>无标题页</title>
        <script src="../../WebPlugin/jquery-1.8.0.min.js" type="text/javascript"></script>
        
        <link rel="stylesheet" type="text/css" href="../../WebPlugin/jquery-easyui-1.4.1/themes/bootstrap/easyui.css">
        <link rel="stylesheet" type="text/css" href="../../WebPlugin/jquery-easyui-1.4.1/themes/icon.css">
        <script src="../../WebPlugin/jquery-easyui-1.4.1/jquery.easyui.min.js" type="text/javascript"></script>
        <script src="../../../WebPlugin/jquery-easyui-1.4.1/locale/easyui-lang-zh_CN.js" type="text/javascript"></script>
        
        <script src="../../../WebPlugin/JQueryCommon2.5.js" type="text/javascript"></script>
    </head>
    <body>
    <p>实例02:Form表单提交数据</p>
    <form id="loginform" method="post" action="API.aspx?cmd=test_test02login">
    <p>用户名:<input id="name" name="name" type="text" /></p>
    <p>密码:<input id="pass" name="pass" type="text" /></p>
    <input id="submit1" type="submit" value="登录" />
    </form>
    
    <script src="test.js" type="text/javascript"></script>
    </body>
    </html>
    //test02_loginsuccess.htm
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>无标题页</title>
    </head>
    <body>
    <p>登录成功!</p>
    <p>用户名:$name</p>
    <p>密码:$pass</p>
    </body>
    </html>

    4)界面效果

     

     

    2.action提交前进行数据验证

    比如:登录前验证用户名密码不能为空

    1)修改test02.htm

    <form id="loginform" method="post" action="API.aspx?cmd=test_test02login" onsubmit="check();">

    2)javascript脚本增加check()方法

    function check(){
        if($('#name').text()==""){
            alert("用户名不能为空!");
            return false;
        } 
        
        if($('#pass').text()==""){
            alert("密码不能为空!");
            return false;
        } 
        
         return true;
    }

    3.使用Jqueryeasyui的form控件提交,相当于使用ajax提交数据

    function login(){
        formSubmit('#loginform',{cmd:'API.aspx?cmd=test_test02login'},function(ret){
            window.location.href = "API.aspx?cmd=test_loginsuccess";
        });
    }

    实例03:Ajax请求Json数据


     

    1.控制器代码

    public void test03()
            {
                ViewResult = ToView(@"ViewsTest	est03.htm");
            }
    
            public void test03_ajaxdata()
            {
                List<object> data = new List<object>();
                data.Add(new { id = 1, name = "选项1" });
                data.Add(new { id = 2, name = "选项2" });
                data.Add(new { id = 3, name = "选项3" });
                data.Add(new { id = 4, name = "选项4" });
                data.Add(new { id = 5, name = "选项5" });
    
                JsonResult = ToJson(data);
            }

    2.界面代码

    <body>
    <p>实例03:JqueryEasyUI控件请求数据</p>
    <p><input class="easyui-combobox" id="cb01" name="cc1" data-options="valueField:'id',textField:'name',url:'API.aspx?cmd=test_test03ajaxdata'" style="200px;"></input></p>
    
    <p><input class="easyui-combobox" id="cb02" name="cc2" data-options="valueField:'id',textField:'name'" style="200px;"></input></p>
    
    <script src="test.js" type="text/javascript"></script>
    <script language="javascript">
    $(cbLoadData);
    </script>
    </body>

    3.脚本代码

    function cbLoadData(){
        simpleAjax({cmd:"test_test03ajaxdata"},{},function(ret){
            $('#cb02').combobox('loadData',ret);
        });
    }

    4.界面效果

     

  • 相关阅读:
    【BZOJ】1827: [Usaco2010 Mar]gather 奶牛大集会
    【BZOJ】1708: [Usaco2007 Oct]Money奶牛的硬币
    【BZOJ】1690: [Usaco2007 Dec]奶牛的旅行
    【BZOJ】1725: [Usaco2006 Nov]Corn Fields牧场的安排
    【BZOJ】1711: [Usaco2007 Open]Dining吃饭
    【BZOJ】1579: [Usaco2009 Feb]Revamping Trails 道路升级
    【BZOJ】1572: [Usaco2009 Open]工作安排Job
    【51NOD】1717 好数
    【POJ】3233 Matrix Power Series
    【BZOJ】1717: [Usaco2006 Dec]Milk Patterns 产奶的模式
  • 原文地址:https://www.cnblogs.com/kakake/p/4148568.html
Copyright © 2011-2022 走看看