Beego學習筆記5:MVC-VC

来源:http://www.cnblogs.com/tudaogaoyang/archive/2017/12/04/7975650.html
-Advertisement-
Play Games

MVC-VC 1> 新建一個user.go控制器,其代碼如下: 2> 在路由器文件router.go中添加路由配置,其代碼如下: 3> 在views文件夾下添加2html頁面,分別為home.html,edit.html 4> Home.html頁面的代碼如下: 5>edit.html頁面如下: 6 ...


MVC-VC

1>     新建一個user.go控制器,其代碼如下:

 

package controllers

import (
	"webapp/models"
	"strconv"
	"fmt"
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/orm"
	_"github.com/go-sql-driver/mysql"
)
//控制器
type HomeController struct {
	beego.Controller
}

//get請求用戶列表 執行的方法
func (c *HomeController) Get() {
	o := orm.NewOrm()
	o.Using("default")
	//用戶列表
	userlist:=models.DataList()
	fmt.Println("用戶列表數據:")
	fmt.Println(userlist)
	 /*返回json數據*/
	 c.Data["datas"]=userlist
	 c.TplName = "home.html"
}
//刪除方法
type DeleteHomeController struct {
	beego.Controller
}
func (c *DeleteHomeController) Get() {
	o := orm.NewOrm()
	o.Using("default")
	id, _ := c.GetInt64("Id")
	fmt.Println(id)
	isdelete:=models.DeleteById(id)
	
	if isdelete{
	  fmt.Println("刪除成功")	  
	}else{
	  fmt.Println("刪除失敗")
	}
	//路徑的跳轉
	c.Redirect("/", 302)
}
//get請求用戶列表 執行的方法
type EditHomeController struct {
	beego.Controller
}
func (c *EditHomeController) Get() {
	o := orm.NewOrm()
	o.Using("default")
	//用戶列表
	idval,errId:=strconv.ParseInt(c.GetString("Id"),10,64);
	if errId!=nil{
		fmt.Println("缺少參數id");
	} 
	user,err:=models.QueryById(idval)
	if err==true{
		fmt.Println("獲取模型失敗");
		fmt.Println(err);
	}else{
		fmt.Println("獲取模型成功");
	}
	 /*返回json數據*/	
	 c.Data["data"]=user 
	 c.TplName = "edit.html"
}

//編輯新增/更新方法
type UpdateHomeController struct {
	beego.Controller
}
func (c *UpdateHomeController) Post() {
	o := orm.NewOrm()
	o.Using("default")

	fields := make(map[string] interface{})	

	//獲取參數
	id, _ := c.GetInt("Id")
	name:=c.GetString("name")
    nickname:=c.GetString("nickname")
    pwd:=c.GetString("pwd")
    email:=c.GetString("email")
	sex:=c.GetString("sex")
	phone:=c.GetString("phone")
	roleid:="1"; 
	status,_:=strconv.ParseInt("1",10,64);
	//新增用戶
	if id==0 {
	   idval,_:=strconv.ParseInt("0",10,64);
       //新增一條數據,並給模型賦值
	   user :=models.Create(idval,name,nickname,pwd,email,sex,roleid,status,phone)	
	   fmt.Println(user)
	}else{
		fields["Id"]=id
		name:= c.GetString("name")
		fields["Name"]=name
		nickname:= c.GetString("nickname")
		fields["Nickname"]=nickname
		pwd:= c.GetString("pwd")
		fields["Pwd"]=pwd
		sex:= c.GetString("sex")
		fields["Sex"]=sex
		email:= c.GetString("email")
		fields["Email"]=email
		//更新
		models.UpdateById(id,"user", fields)
	}
	//路徑的跳轉
	c.Redirect("/Home/List", 302)
}
//控制器
type UserController struct {
	beego.Controller
}

//get請求用戶分頁列表 執行的方法
func (c *UserController) Get() {
	o := orm.NewOrm()
	o.Using("default")
    //得到當前分頁html的數據
	pa,err:=c.GetInt("page")
	if err!=nil{
		println(err)
	}
	pre_page:=3
	totals:=models.GetDataNum()
	res := models.Paginator(pa, pre_page, totals)
	//得到分頁user的數據
	userlist:=models.LimitList(3,pa)
	c.Data["datas"] = userlist  //用戶的數據
	c.Data["paginator"] = res   //分頁的數據
	c.Data["totals"] = totals   //分頁的數據
	c.TplName="list.html"
}

  

2>     在路由器文件router.go中添加路由配置,其代碼如下:

package routers

import (
	"firstweb/controllers"
	"github.com/astaxie/beego"
)

func init() {
	//beego.Router("/", &controllers.MainController{})
	beego.Router("/", &controllers.HomeController{})
	beego.Router("/Home/Edit", &controllers.EditHomeController{})
	beego.Router("/Home/Update", &controllers.UpdateHomeController{})
	beego.Router("/Home/Delete", &controllers.DeleteHomeController{})
	beego.Router("/Home/List", &controllers.UserController{})
}

  

3>     在views文件夾下添加2html頁面,分別為home.html,edit.html

4>     Home.html頁面的代碼如下:

 

<!DOCTYPE html>
 
<html>
      <head>
        <title>首頁 - 用戶列表頁面</title>
        <link rel="shortcut icon" href="/static/img/favicon.png" />
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      </head>
    
    <body>
     
        <div class="row pull-right" style="margin-bottom: 20px;margin-right: 45px;text-align:right;">
          <a class="btn btn-success" href="/Home/Edit?Id=0">添加</a>
        </div>
            
        <table class="table table-striped table-hover table-bordered ">
          <thead>
           <th style="text-align: center">ID</th>
           <th style="text-align: center">名稱</th>
           <th style="text-align: center">昵稱</th>
           <th style="text-align: center">密碼</th>
           <th style="text-align: center">Email</th>
           <th style="text-align: center">性別</th>
           <th style="text-align: center">手機號</th>
           <th style="text-align: center">操作</th>
         </thead>
        
         <tbody id="sortable">
            {{range $index, $item := .datas}}
            <tr class="sort-item"  id="module_{{$item.Id}}" value="{{$item.Id}}">
              <td style="text-align: center;width: 150px;"><span class="label label-default" >{{$item.Id}}</span></td>
              <td style="text-align: center;width: 240px;" ><strong>{{$item.Name}}</strong></td>
              <td style="text-align: center;width: 240px;" ><strong>{{$item.Nickname}}</strong></td>
              <td style="text-align: center;width: 240px;" ><strong>{{$item.Pwd}}</strong></td>
              <td style="text-align: center;width: 240px;" ><strong>{{$item.Email}}</strong></td>
              <td style="text-align: center;width: 240px;" ><strong>{{$item.Sex}}</strong></td>
              <td style="text-align: center;width: 240px;" ><strong>{{$item.Phone}}</strong></td>
              <td style="text-align: center;width: 150px;">
                <a href="/Home/Edit?Id={{$item.Id}}" class="label label-info" title="修改" >修改</a>
                <a href="/Home/Delete?Id={{$item.Id}}" class="label label-info" title="刪除">刪除</a>
              </td>
            </tr>
            {{end}}            
         </tbody>
        </table>
        
        <script type="text/javascript" src="http://cdn.staticfile.org/jquery/2.0.3/jquery.min.js"></script>       
        
    </body>
</html>

5>edit.html頁面如下:

<div class="col-xs-6 col-sm-9">
    <form class="form-horizontal" method="post" id="mainPageContent" action="/Home/Update" enctype="multipart/form-data">
       {{if .data}}
        <input type="hidden" name="Id" value="{{.data.Id}}">
      {{end}}
        <div class="form-group has-success">
          <label  class="col-sm-2 control-label">名稱</label>        
          <div class="col-sm-3">
            <input type="text" class="form-control" id="name" name="name" placeholder="姓名"
             {{if .data}}value="{{.data.Name}}"{{end}}>
          </div>
        </div>
        <div class="form-group has-success">
            <label  class="col-sm-2 control-label">昵稱</label>        
            <div class="col-sm-3">
              <input type="text" class="form-control" id="nickname" name="nickname" placeholder="昵稱"
              {{if .data}}value="{{.data.Nickname}}"{{end}}>
            </div>
        </div>
        <div class="form-group has-success">
            <label  class="col-sm-2 control-label">密碼</label>        
            <div class="col-sm-3">
              <input type="text" class="form-control" id="pwd" name="pwd" placeholder="密碼"
            {{if .data}}value="{{.data.Pwd}}"{{end}}>
            </div>
        </div>
        <div class="form-group has-success">
            <label  class="col-sm-2 control-label">Email</label>        
            <div class="col-sm-3">
              <input type="text" class="form-control" id="email" name="email" placeholder="Email"
              {{if .data}}value="{{.data.Email}}"{{end}}>
            </div>
        </div>
        <div class="form-group has-success">
            <label  class="col-sm-2 control-label">性別</label>        
            <div class="col-sm-3">
              <input type="text" class="form-control" id="sex" name="sex" placeholder="Sex"
               {{if .data}}value="{{.data.Sex}}"{{end}}>
             </div>
        </div>
        <div class="form-group has-success">
            <label  class="col-sm-2 control-label">手機號</label>        
            <div class="col-sm-3">
              <input type="text" class="form-control" id="phone" name="phone" placeholder="Phone"
               {{if .data}}value="{{.data.Phone}}"{{end}}>
             </div>
        </div>
        <div class="form-group">
           <div class="col-sm-offset-2 col-sm-10">
             <button type="submit" class="btn btn-info">確定</button>
           </div>
        </div>
    </form>
</div>

  

6>     運行起來的效果如下:

1->列表頁面如下:

 

 

2->編輯頁面如下:

 

 

3->新增頁面如下:

 

 

4->刪除效果

 

 

7>     下一回實現分頁的效果


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • S#語言演變到如今,其實已經形成比較強的個性了,也有很多利弊。語言的個性是由其語法確定的,S#的基因就是公式系統,其設計、表達和核心庫在各種語言比較中絕對算的上是一流的,已支持近3800個函數或屬性或方法調用。 ...
  • 阻塞隊列(BlockingQueue)是一個支持兩個附加操作的隊列。這兩個附加的操作是:在隊列為空時,獲取元素的線程會等待隊列變為非空。當隊列滿時,存儲元素的線程會等待隊列可用。阻塞隊列常用於生產者和消費者的場景,生產者是往隊列里添加元素的線程,消費者是從隊列里拿元素的線程。阻塞隊列就是生產者存放元 ...
  • context.MapRoute( name: "Test1", //路由名稱 唯一 url: "Admin/{controller}/{action}/{year}/{month}/{day}", //URL規則(分區需增加區功能變數名稱稱常量,此處為Admin) defaults: new {... ...
  • 對象調用某個函數,並將所得結果做為參數,傳遞給另一個函數。而接受參數的函數本身也能夠調用前一個函數。 讓參數接受者去除該項參數,並直接調用前一個函數。 ...
  • 一、視圖函數: 請求對象 request: 1、HttpRequest.body: 請求原數據 2、HttpRequest.path: 一個字元串,表示請求的路徑組件(不含功能變數名稱) 3、HttpRequest.method 4、HttpRequest.GET 5、HttpRequest.POST 6、 ...
  • 實現分頁的效果 1> 分頁的實現的業務邏輯 1->每個頁面顯示N條數據,總的數據記錄數M,則分頁的個數為M%N==0?M/N:M/N+1; 2->頁面渲染分頁的html部分 3>切換頁數,以及輸入參數,後臺處理,重新獲取新的滿足條件的數據 4>分頁的方法,js分頁,以及後臺分頁(下麵的分頁就是實現後 ...
  • 在PHP中,變數是$+變數名,變數名遵循標識符的命名規則,可以以字母、下劃線開頭,可以由數字、下劃線、字母組成合法的變數名。 變數聲明 ======== 所有變數在使用之前應該進行聲明,而且最好帶上註釋,雖然在PHP中可以不顯示聲明變數。聲明變數之後,可以為變數進行賦值;變數的賦值有兩種類型值賦值和 ...
  • 2017最後一個月,當全世界都是各種年度總結,獎勵的時候,IT博客圈似乎已經被人遺忘。而,那些還在半夜,加班寫博客,分享自己經驗的熱心程式猿們,依然,吭哧吭哧的寫著,為了幾個贊,為了一個留言就開心一笑,瞬間滿足。 隔壁的辦公樓里的新手百度了一下,發現了這些原創博客,順利的解決了他的問題,然後,就開心 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...