2018年10月31日 星期三

導入Progress®Telerik® UI for ASP.NET MVC

https://docs.telerik.com/aspnet-mvc/introduction

系統環境需求
  • .NET Framework 3.5 and later
  • ASP.NET MVC 3 and later
  • Visual Studio 2010 and later
  • IIS 5 and later
  • C# / VB.NET
  • SharePoint 2010 and later
系統導入步驟

1.官網下載套件後解壓縮得到檔案。
2.專案加入參考:kendo.mvc.dll
3.加入javascript參考(必須先引用jquery)
  • kendo.all.min.js
  • kendo.timezones.min.js(不一定需要,除非你要開發scheduler功能)
  • kendo.aspnetmvc.min.js
4.加入css參考
  • kendo.common-bootstrap.min.css
  • kendo.bootstrap.min.css
5. 更新web.config
在namespace區塊中加入 <add namespace="Kendo.Mvc.UI" />
--------以上是手動加入------


--------你也可以這樣做------
1. 用NuGet:Install-Package Kendo.Mvc -Version 版本號
2. 用vs的擴充功能和更新找到kendo套件

2018年9月30日 星期日

Flask Jinja2

Jinja2是Flask默認支持的模版引擎,主要作用是渲染模板。

在layout.html中,用{% block body %}和{% endblock %}來綁訂其他頁面內容。所以在這個網頁中,我們可以制定網頁中共用的模板。

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>MyFlaskApp</title>
</head><body>{% block body %} {% endblock %}
</body></html>

另外我們在home.html指定引用layout.html,並撰寫{% block body %}和{% endblock %}之間的網頁內容。

{% extends 'layout.html' %}  #

{% block body %}
 Home Welcome!
{% endblock %}

最後透過flask route造訪home.html時,會先執行layout.html文件,執行完畢後會帶出home.html內容。我們可以看執行結果如下:








如果你要在layout.html中嵌入其他頁面,可以用{% include '網頁來源' %}這個語法來完成。
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>MyFlaskApp</title></head><body>{% include './includes/menu.html' %}
{% block body %} {% endblock %}
</body></html>

其中menu.html如下:
<a href="https://www.jetbrains.com/pycharm"> pycharm </a> <br><a href="http://flask.pocoo.org/"> flask </a> <br>

執行結果就可以看到layout.html已經嵌入menu.html。



2018年9月24日 星期一

Flask Route

Flask是python網站開發微框架。


File->Setting-選到自己的Project->Project Interpreter-> ┼ (右邊加號)>搜尋flask->install package
  • Flask中的路由
新增一檔案名為app.py,import Flask
#making available the code you need to build web apps with flask
from flask import Flask, render_template
# create an instance of the Flask class for our web app
app = Flask(__name__)


# when the user navigates to localhost:5000, 
# the home function will run and it will return its output on the webpage.
@app.route("/")def hello():
    # return "<h3>Hello World! 123</h3>"
    # 利用render_template()導到html檔案,
    # 要注意的是:1.需import render_template 2.該html檔要放在根目錄的Templates目錄之下    return render_template("home.html")

# If the input to the route method was something else, let’s say ‘/abc/’, 
# the function output would be shown when the user visited localhost:5000/abc/
@app.route("/abc")def hello2():
    return 'Hello World! 45678'

# 執行該application,當debug=True,開發環境中則不必重啟server,重新整理網頁即可
app.run(debug=True) 



點選RUN執行,即可看到結果。



2017年6月19日 星期一

Android四大組件


  • Activity
  • 用戶端與應用程序接口,簡單的說就是User Interface的部分,就像視窗程式的Container裝載很多控制項。又如網站的HTML裝載很多網頁控制元件。
  • 不同的Activity之間的資料傳遞則是透過Intent傳輸。
  • Service
  • 後台的運行,一般不與用戶端交互,因此沒有圖形介面,通常是用來為其他組件提供後台服務或監控其他組件的運行狀態。
  • Content Provider
  • 將某個應用程式的指定數據集提供給其他應用程式,其他應用可以通過ContentResolver類從該內容提供者中獲取或存入數據,也就是不同應用程序之間的數據傳遞,實現數據共享。
  • Broadcast Receiver
  • 允許APP接受系統傳來的外部資訊,並喚起APP做出回應。譬如系統本身的低電量則關閉螢幕機制;文件以下載完成,可以啟動其他APP開啟等。

2017年5月1日 星期一

Asp.net MVC - View傳遞資料給Controller

QueryString

  • 在網址後加上參數名稱和參數值
  • ?name1=value1&name2=value2&...


Form表單

  • 透過form及submit將form裡的參數送至controller,處理少量參數
  • 範例:
Action: 
public ActionResult  ModelBind(string name)
{
    ViewBag.Name=name;
    return View();
}
View : 
<form action="/cont/ModelBind" method="post">
     Name:<input type="text" name="name"/>
    <input type="submit" value="Submit" />
</form>
<p>Your Name : @ViewBag.Name</p>
  • FormCollection類別,處理傳遞多個參數
  • 範例:
Action: 
public ActionResult  ModelBind(FormCollection form)
{
    ViewBag.Name=form["name"];
    ViewBag.Age=form["age"];
    return View();
}
View : 
<div> 
@using(Html.BeginForm()){
     Name:<input type="text" name="name"/><br/>
     Age: <input type="text" name="age"/><br/>
    <input type="submit" value="Submit" />
}
</div> 
<p>
 Your Name : @ViewBag.Name<br/>
 Your Name : @ViewBag.Age
</p>



RouteData

  • 透過路由範本取得參數值
  • /{Controller}/{Action}/{id}


JSON
  • 範例:
Model:
 public class Person
{
    public string id {get;set;}
    public string name  {get;set;} 
    public string email {get;set;} 


Action:
[HttpPost]
public ActionResult ExJson(Person[] p)
{
    return Json(p, JsonRequestBehavior,AllowGet); 




2017年4月27日 星期四

Asp.net MVC - Controller傳遞資料給View-2

多個Model(物件)


  • 透過LINQ的Include方法與Lambda Expression將相關聯的資料(關聯資料表),由多個物件封裝成一個
  • 範例:
Action:
public ActionResult ExInclude()

var courses = db.Courses     
.Include(c=>c.Students)     
.Include(c=>c.Schedule) 
return View(courses.ToList());
}
View:
@model IEnumerable<Courses>
<!--標題-->
<tr>
<th>@Html.DisplayNameFor(model=>model.courseName)</th><th>@Html.DisplayNameFor(model=>model.Students.studentID)</th><th>@Html.DisplayNameFor(model=>model.Schedule.classTime)</th>
</tr> 
<!--內容--> 
@foreach(var item in Model){
<tr>
<td>@Html.DisplayFor(modelItem=>model.courseName)</td><td>@Html.DisplayFor(modelItem=>model.Students.studentID)</td><td>@Html.DisplayFor(modelItem=>model.Schedule.classTime)</td>
</tr>
}

ViewModel

  • 專門給View使用的Model物件資料
  • 可以將無相關聯的資料封裝成一個
  • 將所需的多個物件透過一層Class進行屬性封裝
  • 新增ViewModels目錄,通常放在Models目錄之下
  • 範例:
Class:

public class Books
{
public string bookID {get;set;}
public string bookName {get;set;}
public IEnumerable<Order> Order {get;set;}
}
public class Order
{
public string orderNo {get;set;}
public string orderDate {get;set;}
public string orderNumber {get;set;}
}

Action:
public ActionResult ExViewModel()
{
    List<Order> orders = new List<Order>();
    orders.Add(new Order
    {
        orderNo="0001",
        orderDate="2017-04-26",
        orderNumber=2
    });
    orders.Add(new Order
    {
        orderNo="0002",
        orderDate="2017-04-27",
        orderNumber=3
    });
    Books books = new Books();
    books.bookID = "A123456";
    books.bookName = "MVC WOW";
    books.Order = orders;
    return View(books);
}
 View:

@model Books
Book ID: @model.bookID
Book Name: @model.bookName
Order:
<table>
    <tr>
        <th>Order NO</th>
        <th>Order Date</th>
        <th>Order Number</th>
    </tr>
 @foreach(var item in model.Order)
{
    <tr>
        <td>item.orderNO</td>
        <td>item.orderDate</td>
        <td>item.orderNumber</td>
    </tr>
}
</table> 
JSON


    • 使用JavaScriptSerializer類別進行序列化工作,回傳時會設置ContentType為application/json
    • 範例:
    • Model:
       public class Person
      {
          public string id {get;set;}
          public string name  {get;set;} 
          public string email {get;set;} 


      Action:
      public ActionResult ExJson()
      {
           Person person = new Person{ id="A001", name="isabella",email="a@b.c"};
          return Json(person, JsonRequestBehavior,AllowGet); 

    2017年4月26日 星期三

    Asp.net MVC - Controller傳遞資料給View-1

    ViewData

    • ViewDataDictionary字典型別
    public class ViewDataDictionary : IDictionary<string, object>()
    • key必須是字串,內容可儲存任何物件資料 。
    • 無法跨Action方法存取,只能存在於此次HTTP Request中。 
    • 範例:

    Action: 
    public ActionResult ExViewData()
    {
    //Key: Name, data: Isabella
    ViewData["Name"] = "Isabella";
    return View();
    }
    View:
    <h2>ExViewData</h2>
    Name:
    @ViewData["Name"] 

    ViewBag
    • dynamic型別
    • 略過編譯時期靜態型別檢查,改在執行階段進行,大部分行為就像object型別一樣。
    • 效能會比ViewData差一點點。
    • 無法跨Action方法存取,只能存在於此次HTTP Request中。 
    • 範例:
    Action: 
    public ActionResult ExViewBag()
    {
    //Key: Name, data: Isabella
    ViewBag.Name = "Isabella";
    return View();
    }
    View:
    <h2>ExViewBag</h2>
    Name: 
    @ViewBag.Name

    TempData
    • TempDataDictionary字典型別
    public class TempDataDictionary : IDictionary<string, object>()
    • 將資料放在Session之中,所以具有跨Action、Controller存取的能力。
    •  一旦資料被取出,就會被刪除,若不想被刪除的話需要用keep()將資料保存。
    TempData.Keep();
    • 範例:
    第一個Controller:
    public class FirstController : Controller
    {    
    // GET: First    
    public ActionResult Index()    
    {        
    TempData["Name"] = "Isabella";        
    return new RedirectResult(@"~\Second\");//轉到第二個Controller    
    }
    }
    第二個Controller:
    public class SecondController : Controller
    {    
    // GET: Second    
    public ActionResult Index()    
    {        
    return View();    
    }
    }
    第二個Controller的View:
    <h2>ExTempData</h2>
    Name: @TempData["Name"]