循序漸進VUE+Element 前端應用開發(5)— 表格列表頁面的查詢,列表展示和字段轉義處理,循序漸進VUE+Element 前端應用開發(4)— 獲取後端數據及產品信息頁面的處理_包裝設計

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

在我們一般開發的系統界面裏面,列表頁面是一個非常重要的綜合展示界面,包括有條件查詢、列表展示和分頁處理,以及對每項列表內容可能進行的轉義處理,本篇隨筆介紹基於Vue +Element基礎上實現表格列表頁面的查詢,列表展示和字段轉義處理。

在前面隨筆《循序漸進VUE+Element 前端應用開發(4)— 獲取後端數據及產品信息頁面的處理》介紹了一個對產品列表的卡片式圖片分頁展示處理,其中涉及到了對於Element 組件分頁控件的操作,本篇隨筆繼續深化這一組件的使用,結合表格展示來處理效果展示。

1、列表查詢界面效果

在介紹任何代碼處理邏輯之前,我們先來做一個感官的認識,貼上一個效果圖,在逐一介紹其中處理的步驟和注意事項。

 常規的列表展示界面,一般分為幾個區域,一個是查詢區域,一個是列表展示區域,一個是底部的分頁組件區域。查詢區域主要針對常規條件進行布局,以及增加一些全局或者批量的操作,如導入、導出、添加、批量添加、批量刪除等按鈕;而其中主體的列表展示區域,是相對比較複雜一點的地方,需要對各項數據進行比較友好的展示,可以結合Tag,圖標,按鈕等界面元素來展示,其中列表一般後面會包括一些對單行記錄處理的操作,如查看、編輯、刪除的操作,如果是批量刪除,可以放到頂部的按鈕區域。

 

2、查詢區域的處理

查詢區域一般的界面效果如下所示,除了包含一些常用的查詢條件,並增加一些常規的處理按鈕,如查詢、重置、新增、批量刪除、導入、導出等按鈕。

  對於查詢區域來說,它也是一個表單的處理,因此也需要添加一一個對應的對象來承載表單的數據,在data裏面增加一個searchForm的模型對象,以及一個用於分頁查詢的pageinfo對象,如下代碼所示。

export default {
  data() {
    return {
      listLoading: true,
      pageinfo: {
        pageindex: 1,
        pagesize: 10,
        total: 0
      },
      searchForm: {
        ProductNo: '',
        BarCode: '',
        ProductType: '',
        ProductName: '',
        Status: 0
      },

視圖模板代碼如下所示

    <el-form ref="searchForm" :model="searchForm" label-width="80px">
      <el-row>
        <el-col :span="6">
          <el-form-item label="產品編號" prop="ProductNo">
            <el-input v-model="searchForm.ProductNo" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="產品名稱" prop="ProductName">
            <el-input v-model="searchForm.ProductName" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="商品類型" prop="ProductType">
            <el-select v-model="searchForm.ProductType" filterable clearable placeholder="請選擇">
              <el-option
                v-for="(item, key) in typeList"
                :key="key"
                :label="item.value"
                :value="item.key"
              />
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="狀態" prop="Status">
            <el-select v-model="searchForm.Status" filterable clearable placeholder="請選擇">
              <el-option
                v-for="item in Status"
                :key="item.Value"
                :label="item.Text"
                :value="item.Value"
              />
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
    <el-row style="float:right;padding-bottom:10px">
      <el-button icon="el-icon-search" type="primary" round @click="search()">查詢</el-button>
      <el-button icon="el-icon-refresh-left" type="warning" round plain @click="resetForm('searchForm')">重置</el-button>
      <el-button icon="el-icon-document-add" type="success" round @click="showAdd()">新增</el-button>
      <el-button icon="el-icon-document-remove" type="danger" round @click="BatchDelete()">批量刪除</el-button>
      <el-button icon="el-icon-upload2" type="danger" plain="" round @click="showImport()">導入</el-button>
    </el-row>

其中產品類型的是下拉列表,我們通過在data區域獲取一個對象,並在此遍歷可以展示字典內容,如果我們花點時間,可以把這些下拉列表統一按照一個常規的處理模式,定義一個字典組件的方式實現,簡單賦予一個字典類型的Prop值,就可以綁定下拉列表了,這個稍後在細講。

在Vue的腳本處理邏輯裏面,我們可以在Created聲明周期裏面,通過API獲取數據,綁定在模型上,界面就會自動進行更新了,處理過程代碼如下所示。

  created() {
    // 獲取產品類型,用於綁定字典等用途
    GetProductType().then(data => {
      if (data) {
        data.forEach(item => {
          this.productTypes.set(item.id, item.name)
          this.typeList.push({ key: item.id, value: item.name })
        })
      }
    });

    // 獲取列表信息
    this.getlist()
  },
  methods: {
    getlist() { // 構造常規的分頁查詢條件
      var param = {
        type: this.producttype === 'all' ? '' : this.producttype,
        pageindex: this.pageinfo.pageindex,
        pagesize: this.pageinfo.pagesize
      };

      // 把SearchForm的條件加入到param裏面,進行提交查詢
      param.type = this.searchForm.ProductType // 轉換為對應屬性
      Object.assign(param, this.searchForm); // 獲取產品列表,綁定到模型上,並修改分頁數量
      this.listLoading = true
      GetProductList(param).then(data => {
        this.productlist = data.list
        this.pageinfo.total = data.total_count
        this.listLoading = false
      })
    },

其中 Object.assign(param, this.searchForm); 語句處理,是把獲得的查詢條件,覆蓋原來對象裏面的屬性,從而實現查詢條件的變量賦值。

獲得列表數據,就是介紹如何展示表格列表數據的過程了,表格界面效果如下所示。

  先定義一個表格頭部,類似HTML裏面的<table>的標籤,指定樣式和一些常規的操作函數,如下代碼所示。

    <el-table
      v-loading="listLoading"
      :data="productlist"
      border
      fit
      stripe
      highlight-current-row
      :header-cell-style="{background:'#eef1f6',color:'#606266'}"
      @selection-change="selectionChange"
      @row-dblclick="rowDbclick"
    >

具體的屬性可以參考下Element組件關於表格控件的屬性了,在表格列裏面,我們主要關注它的data綁定即可。

接着定義一列複選框選擇的列,用於批量處理的勾選,如批量刪除操作。

  <el-table-column type="selection" width="55"/>

接着就是根據返回JSON屬性,逐一進行內容轉換為表格列的展示過程了,如下所示。

  <el-table-column label="商品編號" width="80">
    <template slot-scope="scope">
      {{ scope.row.ProductNo }}
    </template>
  </el-table-column>

我們如果需要在显示裏面增加處理效果,一般在template裏面修改展示效果即可,如下是單位的處理,增加一個tag標誌強調下。

  <el-table-column align="center" label="單位" width="80">
    <template slot-scope="scope">
      <el-tag type="" effect="plain"> {{ scope.row.Unit }}</el-tag>
    </template>
  </el-table-column>

 而對於一些需要判斷處理的效果,我們可以對內容進行判斷輸出,如下狀態所示。

  <el-table-column label="狀態" width="80">
    <template slot-scope="scope">
      <el-tag v-if="scope.row.Status==0" type="" effect="dark">正常</el-tag>
      <el-tag v-else-if="scope.row.Status==1" type="success" effect="dark">推薦</el-tag>
      <el-tag v-else-if="scope.row.Status==2" type="danger" effect="dark">停用</el-tag>
    </template>
  </el-table-column>

 另外,對於一些常見的日期處理,我們可以使用Formatter,Filter等手段進行內容的轉義處理,可以去掉後面的時間部分。

<el-table-column align="center" label="創建日期" width="120" prop="CreateTime" :formatter="dateFormat" />

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

  dataFormat就是一個轉義函數,函數代碼如下所示。

    dateFormat(row, column, cellValue) {
      return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : ''
    },

使用的時候,需要在頂部引入一個類庫即可

import * as fecha from 'element-ui/lib/utils/date'

對於類似需要進行字典轉義的操作,我們可以使用Formatter的方式轉義,如增加一個函數來解析對應的值為中文信息

  效果可以使用Formatter來轉義

    productTypeFormat(row, column, cellValue) {
      var display = this.productTypes.get(cellValue)
      return display || ''
    },

也可以使用Filter模式來進行處理。

這裏介紹使用Filter的操作處理,首先在界面HTML代碼裏面增加對應的操作,如下代碼所示。

  <el-table-column align="center" label="商品類型" width="120" prop="ProductType">
    <template slot-scope="scope">
      <el-tag type="danger">  {{ scope.row.ProductType | productTypeFilter }}</el-tag>
    </template>
  </el-table-column>

Filter其實就是一個 | 過濾符號,以及接着一個過濾函數處理即可。

export default {
  filters: {
    productTypeFilter: function(value) {
      if (!value) return ''

      var display = that.productTypes.get(value)
      return display || ''
    }
  },

值得注意的是,Filter本身不能引用data裏面的屬性列表進行轉義的需要,如果需要,那麼需要在beforeCreate的鈎子函數裏面記錄this的引用,如下代碼所示。

  對於操作按鈕,我們需要增加一行來显示幾個按鈕即可,如果需要權限控制,可以再根據權限集合判斷一下可操作權限即可。

      <el-table-column label="操作" width="140">
        <template scope="scope">
          <el-row>
            <el-tooltip effect="light" content="查看" placement="top-start">
              <el-button icon="el-icon-search" type="success" circle size="mini" @click="showView(scope.row.ID)" />
            </el-tooltip>
            <el-tooltip effect="light" content="編輯" placement="top-start">
              <el-button icon="el-icon-edit" type="primary" circle size="mini" @click="showEdit(scope.row.ID)" />
            </el-tooltip>
            <el-tooltip effect="light" content="刪除" placement="top-start">
              <el-button icon="el-icon-delete" type="danger" circle size="mini" @click="showDelete(scope.row.ID)" />
            </el-tooltip>
          </el-row>
        </template>
      </el-table-column>

這裏showView/showEdit/ShowDelete主要就是做一些彈出層前的處理操作,我們在data項裏面定義了幾個變量,用來確定是那個操作显示的需要。

      isAdd: false,
      isEdit: false,
      isView: false,
      isImport: false,

例如對應編輯操作,我們是需要通過API處理類,獲取後端數據,並賦值給編輯框的表單對象上,進行展示即可。

    showEdit(id) {
      // 通過ID參數,使用API類獲取數據后,賦值給對象展示
      var param = { id: id }
      GetProductDetail(param).then(data => {
        Object.assign(this.editForm, data);
      })
      this.isEdit = true
    },

對於查看處理,我們除了在每行按鈕上可以單擊進行查看指定行記錄外,我們雙擊指定的行,也應該彈出對應的查看記錄界面

    rowDbclick(row, column) {
      var id = row.ID
      this.showView(id);
    },

這個就是表格定義裏面的一些處理事件

    <el-table
      v-loading="listLoading"
      :data="productlist"
      border
      fit
      stripe
      highlight-current-row
      :header-cell-style="{background:'#eef1f6',color:'#606266'}"
      @selection-change="selectionChange" @row-dblclick="rowDbclick"
    >

每個對話框的:visible的屬性值,則是確定哪個模態對話框的显示和隱藏。

 而對於刪除操作,我們只需要確認一下,然後提交遠端處理,返回正常結果,就提示用戶刪除成功即可。如下邏輯代碼所示。

    showDelete(id) {
      this.$confirm('您確認刪除選定的記錄嗎?', '操作提示',
        {
          type: 'warning' // success,error,info,warning
          // confirmButtonText: '確定',
          // cancelButtonText: '取消'
        }
      ).then(() => {
        // 刪除操作處理代碼

        this.$message({
          type: 'success',
          message: '刪除成功!'
        });
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消刪除'
        });
      });
    },

以上就是常規表格列表頁面查詢、列表展示、字段轉義的一些常規操作,以及對新增、編輯、查看、刪除操作的一些常規處理,通過對這些模型的操作,減少了我們以往重新獲取對應DOM的繁瑣操作,是的數據的操作處理,變得方便了很多。

列出以下前面幾篇隨筆的連接,供參考:

循序漸進VUE+Element 前端應用開發(1)— 開發環境的準備工作

循序漸進VUE+Element 前端應用開發(2)— Vuex中的API、Store和View的使用

循序漸進VUE+Element 前端應用開發(3)— 動態菜單和路由的關聯處理

循序漸進VUE+Element 前端應用開發(4)— 獲取後端數據及產品信息頁面的處理

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

學習習近平主席聯大重要講話精神暨國家“十四五”應對氣候變化規劃思路研討會圓滿舉行_包裝設計

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

2020-10-09

2020-10-09
分享到:
[打印]
字號:[大] [中] [小]

  9月30日,由生態環境部主辦,國家應對氣候變化戰略研究和國際合作中心承辦的“學習習近平主席在第七十五屆聯合國大會一般性辯論上的重要講話精神專家座談會暨國家‘十四五’應對氣候變化規劃思路及2035年願景展望專家研討會”在京順利召開,來自國家氣候變化專家委員會、國家發展改革委、國務院發展研究中心、中科院、社科院等單位的專家參加了研討。生態環境部副部長趙英民出席研討會並講話。

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

  與會專家一致認為,習近平主席鄭重宣布中國二氧化碳排放力爭於2030年前達到峰值,努力爭取2060年前實現碳中和,這是黨中央、國務院統籌國際國內兩個大局作出的重大戰略決策,進一步彰顯了中國深入貫徹習近平生態文明思想、堅定走綠色低碳發展道路的戰略定力,以及堅定支持多邊主義、积極推動構建人類命運共同體的大國擔當,極大提振了國際社會共同實施《巴黎協定》和推動疫後世界經濟“綠色復蘇”的信心。

  與會專家建議下一步重點加強三方面工作:一是認真做好對習近平主席重要講話精神的學習和宣傳,進一步統一思想和認識,提高政治站位,動員全社會力量,推動各地區、各部門及行業加快形成應對氣候變化工作合力。二是抓緊做好“十四五”應對氣候變化的謀篇布局,在準確把握習近平主席重要講話精神實質的基礎上,結合當前形勢和長遠目標,進一步強化戰略研判、目標引領和政策創新。三是儘早部署實現中長期氣候新行動目標路線圖,儘快出台《二氧化碳排放達峰行動計劃》,加強對2035年遠景目標的論證,系統謀划“碳中和國家”建設基本方略和實施路線圖。

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

ASP.NET Core Blazor Webassembly 之 數據綁定_網頁設計公司

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

以設計的實用美學觀點,規劃出舒適、美觀的視覺畫面,有效提昇使用者的心理期待,營造出輕鬆、愉悅的網站瀏覽體驗。

上一次我們學習了Blazor組件相關的知識(Asp.net Core Blazor Webassembly – 組件)。這次繼續學習Blazor的數據綁定相關的知識。當代前端框架都離不開數據綁定技術。數據綁定技術以數據為主導來驅動UI界面,用戶對數據的修改會實時提現在UI上,極大的提高了開發效率,讓開發者從繁瑣的dom操作中解脫出來。對於數據綁定.NET開發者並不會陌生,WPF里大量應用數據綁定技術,有過WPF開發經驗的同學其實很容易理解前端的數據綁定。總之數據綁定技術及其概念、思維極其重要。下面讓我們看看Blazor的數據綁定技術。

單向綁定

Blazor的數據綁定官方文檔是直接從雙向綁定開始的,但我覺得有必要說一下單向綁定。因為其他框架一般都會區分單向、雙向,比如vue的v-bind單向,v-model就是雙向。我們這裏分開講也有利於跟其他框架進行對比。下面我們實現一個計數器組件來演示下單向數據綁定。

使用@進行綁定

@page "/counter"

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }
}

這個Counter組件默認的項目就自帶。跟我們使用服務端Razor一樣,使用@符號在需要替換值的地方插入對應的變量。這個值就會被渲染在相應的地方。當我們在前端修改變量的時候,對應的ui界面會同步進行修改。

使用@bind-{attribute}進行綁定

除了直接使用@進行綁定,我們還可以使用@bind-{attribute}來實現對html元素屬性的綁定,比如對style,class內容進行綁定。下面演示下對class進行綁定。我們把p元素的class綁定到“currentClass”字段。

@page "/counter"

<h1>Counter</h1>

<p @bind-class="currentClass" @bind-class:event="onchange">
    current count: @currentCount
</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    private string currentClass = "text-danger";

    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }
}

使用@bind-{attribute}進行綁定有個比較奇怪的問題,當你使用@bind-{attribute}進行綁定的時候必須同時指定@bind-{attribute}:event。@bind-{attribute}:event是用來指定雙向綁定的時候控件在發生某個事件的時候回寫值到綁定的字段上。可是p,div這種元素根本不可能會激發onchange,oninput這種事件,也不可能去修改綁定的字段的值,這個用法感覺有點多此一舉。
Blazor的單向數據綁定的用法跟ASP.NET Core MVC的Razor基本相似,不同點就是Blazor不需要Http回發到服務器就可以實時渲染新的界面出來。

雙向綁定

雙向綁定主要使用在一些輸入控件上,比如input,select等。當我們對這些控件上的值進行修改後會回寫綁定的字段。這種特性在表單場景中非常有用。我們定義一個用戶信息編輯的組件來演示下:

@page "/infoedit"

<p>
    userName: @userName
</p>
<p>
    sex: @sex
</p>
<p>
    userName: <input @bind="userName" />
</p>
<p>
    sex:
    <select @bind="sex">
        <option value="m">男</option>
        <option value="f">女</option>
    </select>
</p>

@code {
    private string userName="abc";
    private string sex="f";
}

當我們運行這個組件,在文本框進行修改后,鼠標點擊其他地方讓文本框失去焦點值就會回寫到綁定的字段上,上面的單向綁定信息會自動同步。但是如果你用過VUE或者Angularjs的雙向綁定就會覺得失去焦點再回寫字段數據太慢了,一點也不酷。要知道VUE的雙向綁定可是實時同步的,那麼Blazor如何做到在輸入的同時就更新值呢,答案是使用@bind:event來指定回寫的激發事件,我們改成“oninput”事件就可以實現:

<p>
    userName: <input @bind="userName" @bind:event="oninput"/>
</p>

雙向綁定的多種寫法

看到這裏也許你也明白了,@bind真正的本質是由對value的綁定和對某個事件的綁定協同完成的。這點跟VUE非常相似。@bind其實是@bind-value的縮寫,我們可以用@bind-value來實現雙向綁定:

<p>
    userName: <input @bind-value="userName" @bind-value:event="oninput"/>
</p>

以上寫法的效果跟@bind一模一樣。再進一步,@bind-value也只是對@的包裝,我們可以使用@來實現雙向綁定:

@page "/infoedit"

<p>
    userName: @userName
</p>
<p>
    sex: @sex
</p>
<p>
    userName: <input value="@userName" @oninput="oninput"/>
</p>
<p>
    sex:
    <select @bind="sex">
        <option value="m">男</option>
        <option value="f">女</option>
    </select>
</p>

@code {
    private string userName="abc";
    private string sex="f";

    private void oninput(ChangeEventArgs e)
    {
        userName = e.Value.ToString();
    }

}

以上代碼的效果跟@bind一模一樣。通過使用@對value直接進行綁定以及綁定一個oninput事件進行值的回寫,同樣實現了雙向綁定。

格式化時間字符串

使用@bind:format 可以對綁定時間類型字段的時候進行格式化:

出生日期:<input @bind="birthDay" @bind:format="yyyy-MM-dd" />

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

台中景泰電動車行只是一個單純的理由,將來台灣的環境,出門可以自由放心的深呼吸,讓空氣回歸自然的乾淨,減少污染,留給我們下一代有好品質無空污的優質環境

這個功能有點類似Angularjs的filter功能,但是目前只能對時間進行格式化,功能很弱。

父組件綁定數據到子組件

組件之間往往都是嵌套的,很多子組件都依賴父組件的數據來決定如何呈現,這種場景非常常見。我們還是繼續修改上面的編輯組件,用戶信息不在自己初始化,而是從父組件傳遞過來:
子組件:

====================child==================

<p>
    userName: <input @bind="UserInfo.UserName" />
</p>
<p>
    sex:
    <select @bind="UserInfo.Sex">
        <option value="m">男</option>
        <option value="f">女</option>
    </select>
</p>

<p>
    BrithDay:<input @bind="UserInfo.BrithDay" />
</p>
@code {

    [Parameter]
    public UserInfo UserInfo { get; set; }

    [Parameter]
    public EventCallback<UserInfo> UserInfoChanged { get; set; }
}

子組件定義一個UserInfo對象並且使用[Parameter]進行標記,同時如果父組件使用@bind-UserInfo來綁定的話,還必須實現一個UserInfoChanged事件。
父組件:

@page "/"
====================parent==================

<p>
    userName: @userInfo.UserName
</p>
<p>
    sex: @userInfo.Sex
</p>
<p>
    brithday: @userInfo.BrithDay
</p>


<InfoEdit @bind-UserInfo="userInfo"></InfoEdit>

@code {

    private UserInfo userInfo;

    protected override void OnInitialized()
    {
        userInfo = new UserInfo
        {
            UserName = "abc",
            Sex = "f",
            BrithDay = DateTime.Now
        };
        base.OnInitialized();
    }
}

父組件初始化一個UserInfo對象后通過@bind-UserInfo綁定給子組件。注意這裏我們修改子組件的值並不會同步給父組件,所以可以看到@bind-UserInfo的傳值還是單向的。

子組件傳值給父組件 ??

原來我以為父組件使用@bind-UserInfo並且子組件實現了對應的changed方法就可以實現子組件跟父組件的自動傳值,就跟input的雙向綁定一樣。但是不管我怎麼試都沒有卵用。如果只是單向的那為什麼要這麼大費周章?我直接使用屬性賦值不就可以了么?像下面這樣:

<InfoEdit UserInfo="userInfo" ></InfoEdit>

直接通過組件的屬性直接把父組件的數據傳遞到子組件,效果跟上面是一樣的,而且這樣子組件我還能少寫一個changed事件。我原本以為使用基本類型,比如string可以自動雙向綁定,然後並沒有什麼卵用。沒有辦法我繼續嘗試父組件監聽UserInfoChanged事件來接受子組件的數據,然後VS提示我同一個事件不能綁定兩次。

我已經無語了,難道要我再定義一個事件嗎?於是我放棄了@bind-來實現子組件給父組件傳值,我直接使用屬性賦值難道不比這個簡單嗎?
子組件修改數據的時候不斷對外拋事件:

====================child==================

<p>
    userName: <input @bind="UserInfo.UserName"  @oninput="InvokeChanged"/>
</p>

<p>
    sex:
    <select @bind="UserInfo.Sex">
        <option value="m">男</option>
        <option value="f">女</option>
    </select>
</p>

<p>
    BrithDay:<input @bind="UserInfo.BrithDay" />
</p>
@code {

    [Parameter]
    public UserInfo UserInfo { get; set; }

    [Parameter]
    public EventCallback<UserInfo> UserInfoChanged { get; set; }

    private void InvokeChanged()
    {
        UserInfoChanged.InvokeAsync(this.UserInfo);
        Console.WriteLine("InvokeChanged");
    }

}

父組件監聽事件后更新數據:

@page "/"
====================parent```==================

<p>
    userName: @userInfo.UserName
</p>
<p>
    sex: @userInfo.Sex
</p>
<p>
    brithday: @userInfo.BrithDay
</p>
<p>
    title: @title
</p>


<InfoEdit UserInfo="userInfo" UserInfoChanged="HandleUserInfoChanged"></InfoEdit>

@code {

    private UserInfo userInfo;

    private string title;

    protected override void OnInitialized()
    {
        userInfo = new UserInfo
        {
            UserName = "abc",
            Sex = "f",
            BrithDay = DateTime.Now
        };
        base.OnInitialized();
    }

    private void HandleUserInfoChanged(UserInfo info)
    {
        this.userInfo.UserName = info.UserName;

        Console.WriteLine("HandleUserInfoChanged");
    }


}


我原以為這樣就沒什麼問題了,可奇怪的是,父組件頁面重新渲染需要在子組件第二次修改數據后呈現且呈現的是前一次的。

到這裏我已經無語了,最後我只能在子組件直接添加一個按鈕,修改完後點擊保存來觸發InvokeChanged事件,這樣子是可以的:

====================child==================

<p>
    userName: <input @bind="UserInfo.UserName" />
</p>

<p>
    sex:
    <select @bind="UserInfo.Sex">
        <option value="m">男</option>
        <option value="f">女</option>
    </select>
</p>

<p>
    BrithDay:<input @bind="UserInfo.BrithDay" />
</p>

<button class="btn btn-danger" @onclick="InvokeChanged">保存</button>

@code {

    [Parameter]
    public UserInfo UserInfo { get; set; }

    [Parameter]
    public EventCallback<UserInfo> UserInfoChanged { get; set; }

    private void InvokeChanged()
    {
        UserInfoChanged.InvokeAsync(this.UserInfo);
        Console.WriteLine("InvokeChanged");
    }

}

到此數據綁定也演示完了,可是關於子組件往父組件傳值的事我實在沒像明白,難道是我哪裡錯了?

最後附上代碼:BlazorWasmDataBind

相關內容:
ASP.NET Core Blazor Webassembly 之 組件
ASP.NET Core Blazor 初探之 Blazor WebAssembly
ASP.NET Core Blazor 初探之 Blazor Server

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網站的第一印象網頁設計,決定了客戶是否繼續瀏覽的意願。台北網動廣告製作的RWD網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上它。

小心 HttpClient 中 FormUrlEncodeContent 的 bug_網頁設計公司

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

當全世界的人們隨著網路時代而改變向上時您還停留在『網站美醜不重要』的舊有思維嗎?機會是留給努力改變現況的人們,別再浪費一分一秒可以接觸商機的寶貴時間!

小心 HttpClient 中 FormUrlEncodeContent 的 bug

Intro

最近發現活動室預約項目里的上傳圖片有時候會有問題,周末找時間測試了一下,發現小圖片的上傳沒問題,大圖片上傳會有問題,而且異常信息還很奇怪,System.UriFormatException: Invalid URI: The Uri string is too long 看這個錯誤的信息還以為是請求的 url 過長導致的,但是實際請求的 url 很短,詭異的異常信息

測試示例

為了方便大家了解和測試這個bug,我在 Github 上提供了一個示例 https://github.com/WeihanLi/SamplesInPractice/blob/master/HttpClientTest/FormUrlEncodeContentTest.cs

HttpClient 示例代碼:

public class FormUrlEncodeContentTest
{
    private const string TestUrl = "https://cnblogs.com";

    public static async Task FormUrlEncodedContentLengthTest()
    {
        using (var httpClient = new HttpClient(new NoProxyHttpClientHandler()))
        {
            using (var response = await httpClient.PostAsync(TestUrl, new FormUrlEncodedContent(new Dictionary<string, string>()
            {
                {"bigContent", new string('a', 65535)},
            })))
            {
                Console.WriteLine($"response status code:{response.StatusCode}");
            }
        }
    }

    public static async Task ByteArrayContentLengthTest()
    {
        using (var httpClient = new HttpClient(new NoProxyHttpClientHandler()))
        {
            var postContent = $"bigContent={new string('a', 65535)}";
            using (var response = await httpClient.PostAsync(TestUrl, new ByteArrayContent(postContent.GetBytes())))
            {
                Console.WriteLine($"response status code:{response.StatusCode}");
            }
        }
    }

    public static async Task StringContentLengthTest()
    {
        using (var httpClient = new HttpClient(new NoProxyHttpClientHandler()))
        {
            var postContent = $"bigContent={new string('a', 65535)}";
            using (var response = await httpClient.PostAsync(TestUrl, new StringContent(postContent)))
            {
                Console.WriteLine($"response status code:{response.StatusCode}");
            }
        }
    }
}

測試代碼:

InvokeHelper.OnInvokeException = Console.WriteLine;

await InvokeHelper.TryInvokeAsync(FormUrlEncodeContentTest.FormUrlEncodedContentLengthTest);
Console.WriteLine();
await InvokeHelper.TryInvokeAsync(FormUrlEncodeContentTest.StringContentLengthTest);
Console.WriteLine();
await InvokeHelper.TryInvokeAsync(FormUrlEncodeContentTest.ByteArrayContentLengthTest);

Console.WriteLine("Completed!");

輸出結果如下:

揪出異常始末

上傳圖片的時候會調用一個碼雲的一個 POST 接口來保存上傳的圖片,參數是通過 form-data 的方式傳遞的,在 POST 的時候報異常了,異常信息很詭異,具體信息和上面的是一樣的:

這個異常信息看上去像是 url 過長導致的,但是實際的 url 很短只有幾百,而且從調用的堆棧上來看是 FormUrlEncodedContent 的 bug,然後根據異常堆棧信息去看了一下源碼,部分源碼如下:

首先看 FormUrlEncodedContent 做了什麼:

※想知道最厲害的網頁設計公司嚨底家"!

RWD(響應式網頁設計)是透過瀏覽器的解析度來判斷要給使用者看到的樣貌

然後再找上一層堆棧信息,Uri是一個分部類(partial),你如果直接在 Github 上 Find 的話會找到多個 Uri 相關的文件,最後在 UriExt 中找到了上面的 EscapeDataString 方法:

最後來看最上層的堆棧信息 UriHelper.EsacpeString 方法,找到異常拋出的地方

在 Uri 這個類中可以找到上面定義的 c_MaxUriBufferSize,它的值是 0xFFF0 轉成十進制就是 65520

找到問題所在之後,就可以避免這個問題了,再遇到這個問題也就知道是怎麼回事了,上面的問題就是 post 的數據太大了,超過了這個限制,所以引發的異常

More

既然知道這個是 FormUrlEncodedContent 的 bug,那麼修復它就可以通過避免使用它,可以直接使用 ByteArray Content,或者不需要 Encode 處理直接用 StringContent 也是可以的

後來在 Github 搜 issue 的時候發現也有很多人遇到了這個問題,這個問題會在 net5 中得到修復,詳見 PR https://github.com/dotnet/corefx/pull/41686

文中一些源碼的鏈接在文章最後的 Reference 的部分可以找到

Reference

  • https://github.com/dotnet/corefx/blob/release/3.1/src/System.Net.Http/src/System/Net/Http/FormUrlEncodedContent.cs#L53
  • https://github.com/dotnet/corefx/blob/release/3.1/src/System.Private.Uri/src/System/UriExt.cs#L597
  • https://github.com/dotnet/corefx/blob/release/3.1/src/System.Private.Uri/src/System/UriHelper.cs#L134
  • https://github.com/dotnet/corefx/blob/release/3.1/src/System.Private.Uri/src/System/Uri.cs
  • https://github.com/dotnet/corefx/pull/41686
  • https://github.com/dotnet/corefx/tree/release/3.1
  • https://github.com/WeihanLi/SamplesInPractice/blob/master/HttpClientTest/Program.cs
  • https://github.com/OpenReservation/ReservationServer/commit/0262b2a6ce20c3ec12acc9548235757c18b20690#diff-dd926ccf347a255671a64f9e3edd5a88

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

透過資料庫的網站架設建置,建立公司的形象或購物系統,並提供最人性化的使用介面,讓使用者能即時接收到相關的資訊

這些狂拽酷炫吊炸天的自主SUV,讓合資SUV哭暈在廁所_網頁設計公司

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

以設計的實用美學觀點,規劃出舒適、美觀的視覺畫面,有效提昇使用者的心理期待,營造出輕鬆、愉悅的網站瀏覽體驗。

38-15。98萬。對於無數的年輕人來說,沒有什麼能夠比低廉的價格來得更實在、吸引。7。38-15。98萬的售價意味着什麼。意味着你將能夠得到一個跟奧迪Q3完全一模一樣的外觀,在大學城把妹的時候,成功的幾率將會幾何級數地增長。

古語有雲:“走別人的路,讓別人無路可走。”這句話經常被我們引用在“一個絕世罕有的屌毛霸道且蠻不講理地侵佔別人的勞動成果,並且還自我得意洋洋“等情況上。不過讓人震驚的是,這句看似賤的毫無底線的話,竟然在我們高大上的汽車工業得到了充分的實踐。把這句話的效果發揮到淋漓精緻的,到底是哪家車企?各位吃瓜群眾趕緊來圍觀。

1雙環SRV

價格:9-12萬(停產)

真正的復刻,是不需要皮尺的,依靠的,僅僅是設計師的靈魂。雙環SRV就是基於這一哲學宗旨所誕生的偉大作品。之所以說它偉大,是因為在那個本田CRV風靡全國,動不動加價好多萬的年代(2004年左右),雙環汽車深知道普羅大眾錢包緊張的窘迫,頗為上進地不知道從哪裡搞來一輛本田CRV,照貓畫虎地造出了外形跟本田CRV一模一樣的雙環SRV。而這款車上市的時間,正正是東本本田國產CRV的那一年(2004年)。這樣的速度,起碼得堪稱是奇迹吧?

相對於本田CRV二十多萬的售價,雙環SRV的售價只需要9-12萬,這麼便宜的一輛城市SUV,瞬間就在全國各地炸開了鍋。不僅如此,雙環SRV還標誌了在當時看起來特牛逼的實木內飾、自動空調、真皮座椅等配置,哄得消費者不要不要的。據悉在很長的一段時間,雙環汽車有90%以上的銷量都是由雙環SRV所貢獻的。本田看不過眼了,開始了曠日持久的侵權狀告,但不曾讓人意料到的是,法院在2015年判決本田反賠償雙環汽車1600萬。

2眾泰SR7

價格: 7.38-15.98萬

相比起雙環SRV這種泰山級人物,眾泰SR7顯然就是一個不折不扣的的小學雞。不過兩者名字上的不謀而合,

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網站的第一印象網頁設計,決定了客戶是否繼續瀏覽的意願。台北網動廣告製作的RWD網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上它。

似乎也已經昭示了眾泰SR7的非凡實力。當奧迪絞盡腦汁在思考如何慫恿更多的年輕人去購買旗下的緊湊型SUV—Q3的時候,拿着皮尺的眾泰設計師們便已經提前幫奧迪解決了這一個煩惱。為什麼?因為眾泰SR7的售價僅需要7.38-15.98萬。對於無數的年輕人來說,沒有什麼能夠比低廉的價格來得更實在、吸引。

7.38-15.98萬的售價意味着什麼?意味着你將能夠得到一個跟奧迪Q3完全一模一樣的外觀,在大學城把妹的時候,成功的幾率將會幾何級數地增長。其次,你能夠擁有一塊媲美特斯拉的12寸超大中控屏,你與那些開着特斯拉的人一樣,都是科技生活最忠實的擁躉。再次之,你能夠得到上坡輔助、自動駐車、全景天窗、全景攝像頭、定速巡航、電動座椅等一系列在這個級別車型上屬於無法想象的酷炫屌配置。這樣一輛的車,能夠體現出你非凡的豪華品位,能夠滿足你對前沿科技的渴望,能夠讓你毫無負擔地踏入一個更高層次的用車體驗。

3眾泰SR9

價格:未知

眾泰是中國近代汽車工業史上,最具有典型意義的汽車品牌。因為它不僅能抄、會抄,更重要的是,在他眼中,模仿是不應該有條條框框的,模仿是一項藝術。如果說眾泰SR7的推出,讓中國的年輕人提前50年踏入了豪門。那眾泰SR9的推出,無疑是讓中國的年輕人提前100年踏入了豪門。你是否擁有一個可望不可即的保時捷夢?如今眾泰的“保時捷”來了。

根據最新的消息,外形已經最終確定的眾泰SR9與保時捷的高性能SUV—Macan高度一致,各位悶騷的少年只需要後期到汽配城自行更換車標,即可升級為保時捷Macan。動力方面配備了2.0T的發動機,變速箱有5MT以及6DCT可選,要跑贏宏光S相信不是一件難事。至於在配置上,眾泰SR9再度實現了高度的突破,分別搭載了自動大燈、19寸鋁合金輪轂、全景天窗、車道偏離、盲點監測、電動尾門,做到了完全對標保時捷Macan。在大家關心的價格上,眾泰官方還沒有透露,不過根據以往的定價猜測,起售價應該會在11萬的範圍。不過我還是有一點建議,如果眾泰是不是應該把保時捷的車標作為後期選裝件?

本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

台中景泰電動車行只是一個單純的理由,將來台灣的環境,出門可以自由放心的深呼吸,讓空氣回歸自然的乾淨,減少污染,留給我們下一代有好品質無空污的優質環境

回頭率暴虐A6 E級 這些拉風跑車努力點就能買了!_網頁設計公司

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

透過資料庫的網站架設建置,建立公司的形象或購物系統,並提供最人性化的使用介面,讓使用者能即時接收到相關的資訊

內飾上還是有着不少大眾家族風格,三幅式的方向盤,整體功能布局和擋把都非常熟悉,最為吸引人的莫過於中控台中間新增的三聯表,能显示機油溫度、精密計時、渦輪壓力值,胎壓監測、無鑰匙啟動/進入、全景天窗、方向盤換擋、倒車影像、感應雨刷等配置非常豐富。

豐田(進口)-豐田86

指導價:26.96-27.96萬

豐田86非漫畫里的的86,只能說它佔了一點漫畫的光,漫畫里的那台AE86是一款性能不是很出眾的運動版家用車,而現在的86即使在出廠狀態下也擁有很強運動性能的跑車了,大尺寸的中網,犀利的大燈,低矮的車身,是一輛辨識度很高的跑車。

與其轎跑般的外觀一樣,內飾也是充滿運動風格,紅色雙縫線,仿碳纖維面板,搭配銀色飾板,營造了很濃郁的跑車氣息,飛機按鈕風格按鍵,螺母狀的旋鈕,個性化十足,無鑰匙進入/啟動、上坡輔助、前排座椅加熱、自動頭燈、自動空調等配置滿足日常使用。

對於雙門版的2+2座跑車來說,空間上就不指望有多寬敞了,前排肯定是夠用的,而後排空間就十分有限了,平時放些行李或者坐小孩子就方便許多,全系標配2.0L發動機(最大功率200馬力)搭配6擋手動或者6擋手自一體變速箱,油門調校靈敏,動力響應迅速,懸挂對車身的支撐非常到位,操控性極佳,而日常駕駛的舒適性就差了很多。

大眾(進口)-尚酷

指導價:22.28-39.08萬

大眾尚酷算得上是最不正經的大眾車了,沒有了家族式的前臉,也沒有了低調的風格,走在大街上依然是一輛回頭率很高的車子,犀利的前臉、兇猛的前大燈,簡潔的車身線條營造了很好的曲面效果,辨識度超高的尾燈造型飽滿而富有動感,

※想知道最厲害的網頁設計公司嚨底家"!

RWD(響應式網頁設計)是透過瀏覽器的解析度來判斷要給使用者看到的樣貌

一看就知道是款實力不俗的小鋼炮。

內飾上還是有着不少大眾家族風格,三幅式的方向盤,整體功能布局和擋把都非常熟悉,最為吸引人的莫過於中控台中間新增的三聯表,能显示機油溫度、精密計時、渦輪壓力值,胎壓監測、無鑰匙啟動/進入、全景天窗、方向盤換擋、倒車影像、感應雨刷等配置非常豐富。

乘坐空間方面表現一般,賽車式的座椅很炫酷,但舒適性就很一般了,後排短途乘坐一下是不成問題的,而行李箱的儲物空間還是令人滿意的,動力方面提供1.4T或者2.0T+7擋雙離合的搭配,2.0T高功率版本甚至可以6秒破百,硬朗的懸挂調校和低重心的車身,操控過程中姿態控制方面非常出色,升降擋非常积極。

標緻(進口)-標緻RCZ

指導價:32.88-35.68萬

一直以來,法系廠家天馬行空的設計都是令人驚嘆的,標緻RCZ也不例外,上下分體式設計的大嘴進氣格柵很有層次感,車身側面的線條非常流暢動感,尤其是車頂拋物線造型的設計,廠商稱其為“雙氣泡”波浪式車頂,大大降低了風阻係數,后擾流板會隨着車速提升而自動升降,非常炫酷。

內飾上採用了黑色和棕色相互搭配,給人一種很復古的感覺,皮革包裹的中控台質感出色,很顯檔次,平底式三幅方向盤握感相當出色,配置方面也能滿足日常所需,胎壓監測、上坡輔助、定速巡航、電動座椅記憶、JBL音響、轉向頭燈、車內氛圍燈等一應俱全。

標緻RCZ的軸距達到2612mm,屬於入門級跑車,後排基本無法容納成年人入坐,而儲物空間方面表現夠用,後排座椅放倒后擴展容積達到760升,1.6T發動機最大功率163馬力,搭配多種模式可選的6速手自一體變速箱,動力性能上表現不那麼出色,但是底盤調校很有運動性,彎道表現更加出色。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

當全世界的人們隨著網路時代而改變向上時您還停留在『網站美醜不重要』的舊有思維嗎?機會是留給努力改變現況的人們,別再浪費一分一秒可以接觸商機的寶貴時間!

底盤完爆現代低價車 7萬級國貨精品家轎該買誰!_網頁設計

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

而底盤方面卻是有着一種德味,給人一種硬朗的感覺,能給到人比較豐富的路感,在處理好地面顛簸的時候也能給你一種反饋,當然這也是它使用机械液壓助力帶來的好處,唯一就是手感略重。而在大的顛簸的時候反應比較迅速乾脆,有着德系車的感覺,但是在極端的情況下會有減震器到頭的感覺,有着一定的衝擊傳入車內。

前言

對於汽車的質感,我們在駕駛過程之中除了動力總成給我們的感覺以外,底盤上的質感也是我們應該看重的。要說合資品牌和自主品牌的差別,底盤應該是最為明顯,但是今天筆者要介紹的幾款車型在同價位中卻是有着最好的底盤表現。

長安悅翔V7上市至今已經積累了不少的粉絲,其中大的原因就是底盤,這款車型底盤是在歐洲進行研發,所以在底盤上也是有着歐系汽車的獨特味道。能夠很好的處理地面細小的振動,在過彎的時候也能有着較好的抗側傾能力,只是在快速連續經過欺負路面時會有點“處理不過來”的感覺,

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

但整體還要必要比其他的對手要優勝不少。而且發動機匹配方面也是非常不錯的水平,有着1.6L自然吸氣發動機以及1.0T渦輪增壓發動機可供選擇,有着5MT、6MT手動變速箱以及4AT變速箱可供選擇,而且ESp車身穩定系統配置率極高。

作為奇瑞艾瑞澤系列真正走量的車型,艾瑞澤5在各方面都能給人一個滿意的問卷,1.6L配合5MT或者是CVT變速箱整體表現中規中矩。而底盤方面卻是有着一種德味,給人一種硬朗的感覺,能給到人比較豐富的路感,在處理好地面顛簸的時候也能給你一種反饋,當然這也是它使用机械液壓助力帶來的好處,唯一就是手感略重。而在大的顛簸的時候反應比較迅速乾脆,有着德系車的感覺,但是在極端的情況下會有減震器到頭的感覺,有着一定的衝擊傳入車內。

傳祺在創立品牌初期是收購了阿爾法羅密歐166的平台,並對它進行吸收以便自己研發車型。所以在後來的傳祺汽車上都保留着這種高素質底盤,而且是偏向於歐系汽車的駕駛感受。無論是小的路面顛簸還是大的路面起伏處理起來都是比較優秀的,在側傾抑制上也是如此,但是卻總讓人欠缺了一絲傳祺自己的個性。1.6L自然吸氣發動機配合的是5MT手動變速箱或者是4AT變速箱,和對手的CVT變速箱相比有點不利。但是傳祺GS4同款1.3T渦輪增壓發動機卻是相當的優秀,在油耗上可以比起競爭對手低上不止一個層次。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

關注率低就不是好車?這幾款車實用 個性 還上檔次!_貨運

※智慧手機時代的來臨,RWD網頁設計為架站首選

網動結合了許多網際網路業界的菁英共同研發簡單易操作的架站工具,及時性的更新,為客戶創造出更多的網路商機。

8L,日常代步絕對足夠。相信大家都聽聞過法國車對底盤調校頗有心得,確實如此,C4L的底盤偏向舒適,路過顛簸的時候能夠把震動充分的吸收,傳遞到乘客的動作已經比較溫柔,再配合寬大柔軟的座椅,覺得作為家用車來說,C4L的舒適性是十分優秀的。

留意銷量榜的朋友就會發現在緊湊型車裡面,朗逸和英朗等車可謂長期佔據前排位置,月銷量都是輕輕鬆松3.5W以上。這些銷量王在路上真可謂一抓一大把,熱銷車固然有可取之處,但也不是沒有缺點。車除了是交通工具,也是展現你個人品味的載體,不想隨波逐流的你,可以看看這些熱度不太高,性價比卻很高的車型。

一汽-大眾-寶來

指導價:10.78-15.38萬元

都說大眾愛用套娃臉,而來到新寶來,終於在外觀上帶來了一點新鮮感。中網採用了一條過的鍍鉻飾條,十分幹練,全新的大燈造型搭配LED燈帶元素,頗有一輛“小邁騰”的味道。側麵線條簡潔,平直的腰線讓車身的觀感更加修長。至於車尾,別出心裁的採用了“V”型的切割,與“e”型尾燈渾然一體,既時尚又有較強的整體感。

內飾上依然是平直、幹練的大眾風格,雖然主要材料為硬質塑料,但高配車型中的木紋飾板和鋼琴烤漆面板的加入,也讓內飾的高級感增加了不少。中控的5英寸屏搭載了MIB信息娛樂系統,尺寸確實小,但常用的多媒體功能還是可以滿足的。如果你和一樣對大眾風格的內飾比較認可的話,寶來的內飾也不會讓你失望。

除了低配以外,中高配的寶來都採用真皮座椅,實際上為打孔皮+絨布面料的形式,透氣性、防滑性和支撐性都很好,也很喜歡這種不同材料混搭的座椅。至於空間方面,身高180cm的體驗者在後排取得兩拳的腿部和三指的頭部空間,其實已經不算局促了。

動力方面,寶來的自動擋車型為1.6L+6AT和1.4T+7速雙離合的動力系統,最大馬力分別是110pS和131pS,1.6L的動力還是夠用的,且6AT會比較平順,實際上是不慍不火吧,而1.4T的車型就能帶來更积極的動力響應,同時大眾的這個DQ200雙離合變速箱調校已經很成熟,只要你不是激烈駕駛,是幾乎感受不到頓挫的。如果你覺得D擋的油門確實遲鈍,那撥到S擋相信就能給你更過癮的駕駛感受。

新寶來的底盤延續了大眾的優點,緊緻、紮實,處理顛簸的動作十分乾脆,雖然有路感的反饋,但這些動作不會讓乘客太反感,另一方面,新寶來的隔音降噪的性能也有所升級,整體更加偏向於舒適型家用車了。

寶來的主要競爭對手其實是師出同門的朗逸,兩車都是基於同一平台的兄弟,動力和操控方面都差別不大,只是朗逸在配置上會稍微領先,但實際多出來的前雷達等等配置還不一定值一萬塊,再考慮到一汽-大眾向來不錯的做工方面的口碑,所以想買一輛大眾小轎車的話,不妨考慮一下價格更低的寶來。

東風雪鐵龍-C4L

指導價:13.19-18.99萬元

其實C4L的外形並不差,也算是規規矩矩的三廂家用車了。新C4L前臉採用了最新的家族式設計,中網的鍍鉻飾條與車標完美結合的同時也與大燈相連,前臉十分優雅。至於側面,和舊款一樣採用了複雜的線條,比較飄逸動感。車尾有一條粗鍍鉻飾條,尾燈當中也加入了“C”型LED燈帶設計。

至於內飾,造型十分飽滿,如方向盤、中控台、副駕前方的位置,都採用一些比較圓潤的線條,喜好與否就見仁見智了。材料上主要還是塑料,但做工相當不錯,不會給人廉價感。除此以外,新C4L採用了全新樣式的換擋桿、同時加入了电子手剎,新增了駕駛輔助系統和座椅加熱等功能,配置上更加緊貼潮流了。

座椅有採用真皮或皮織混搭的包裹,造型也符合人體工程學,填充厚實的座椅還是能提供不錯的舒適性。空間方面,身高171cm的體驗者在後排能有兩拳有餘的腿部和三指的頭部空間,說不上十分寬裕,但除非特別高的人,否則坐起來都不會覺得壓抑的。

動力方面,新C4L採用1.2T發動機取代了以往的1.8L發動機,而1.6T版本則得以保留。變速箱方面依舊是6AT或者5MT,十分成熟穩定的搭配。1.2T的馬力能達到136pS,而且扭矩方面甚至比1.8L還要出色,前段的加速十分有勁,只是100km/h以後就開始緩和下來。在低扭更加出色的情況下,1.2T已經完美取代1.8L,日常代步絕對足夠。

相信大家都聽聞過法國車對底盤調校頗有心得,確實如此,C4L的底盤偏向舒適,路過顛簸的時候能夠把震動充分的吸收,傳遞到乘客的動作已經比較溫柔,再配合寬大柔軟的座椅,覺得作為家用車來說,

※回頭車貨運收費標準

宇安交通關係企業,自成立迄今,即秉持著「以誠待人」、「以實處事」的企業信念

C4L的舒適性是十分優秀的。

C4L的定價比同級別的競爭對手要略高,雖然它的動力和舒適性都不輸同級對手,如果價格能夠再減少個1.5W,相信競爭力會大大的增強。如果單看14萬這個價格來說,同價位的C4L在動力、配置上都優於卡羅拉,再加上一直口碑極好的底盤調校,C4L其實在這個價位來說很值得考慮。

廣汽本田-凌派

指導價:10.98-14.98萬元

如果你想要一輛造型大氣,又不能夠太老土的車子,那凌派會很適合你。前臉為寬鍍鉻+大嘴的中網,配合與中網一體化的LED大燈,凌派的氣度就更像一輛中型車了。側麵線條緩緩上提,讓凌派看起來更加年輕和更有衝擊力。而車尾的造型則比較飽滿和簡潔,配合線條依然有不錯的層次感,認真看也發現它有幾分雅閣的神韻。

內飾上,其實第一眼關注的是那顆紅色的啟動按鈕,真的蠻帶感的。內飾的造型是不規則的,略偏向於駕駛員的一側,採用了大量的啞光材質作為內飾面板,質感也確實很不錯。Honda Connect系統的加入讓多媒體系統更加好玩了,另外,本田特有的LWC盲點显示系統也是一項比較實用的配置。

至於座椅的材料,就沒有歐洲車那麼“任性”了,除了頂配為仿皮,其他的車型均配備了織物座椅,拋卻廉價感不提的話,實際上座椅還是十分柔軟舒適的。空間方面,身高180cm的體驗者在後排能有兩拳的腿部和三指的頭部空間,不是很寬裕,但對比同級對手已經是不錯的表現了。

動力方面,凌派全系搭配1.8L i-VTEC發動機,變速箱則為5MT或CVT,最大馬力達到136pS,雖然不是招牌的地球夢發動機,但這套動力系統並沒有讓失望。整車的行駛表現十分輕盈,油門也比較靈敏,這個動力足夠我們在市區游刃有餘的行駛,同時本田成熟的CVT在平順性方面已經無需置疑了。不談駕駛樂趣(畢竟是CVT)的話,對凌派的動力是十分滿意的。

底盤雖然是扭力梁后懸,但經過調校后在舒適性方面有很好的表現,懸挂能夠吸收大量的顛簸,整體的表現為柔軟之餘又十分穩重,高速行駛時也能有比較穩定的車身姿態。轉向手感輕盈而不會很“虛”,對於凌派,無論駕駛還是乘坐,都能獲得很好的舒適性體驗。

凌派的定位處於鋒范和雅閣之間,主要對手還是卡羅拉、朗逸等車,也是同級別少有的配備了1.8L發動機的車,在今年這個小排量免購置稅的政策下,確實有點吃虧。撇開這些不說的話,1.8L的動力實際上會表現得更加從容,高速行駛時煩人的發動機噪音也會有所緩解。如果不介意那幾千塊錢購置稅的話那凌派其實很值得購買。

東風日產-騏達

指導價:9.99-13.49萬

騏達在做工和質量方面都是很不錯的,就算現在在路上,也不缺乏第一代騏達的身影,可惜動力系統及外觀都不夠“man”。新騏達也採用了日產家族的V-motiong設計語言,前臉的造型變化最明顯,V型的鍍鉻與引擎蓋的線條相連,還是頗動感的。至於側面和車尾,整體還是熟悉的味道,回力標造型的尾燈也是增加了一點運動氣息。

內飾還是使用對稱式的設計,布局上變化不大。採用了雙縫線的工藝,同時上方採用了搪塑材料,在做工和用料這一點,騏達還是做得比較到位的。全新的7英寸觸摸屏除了常用功能以外也支持Car play功能。騏達的內飾雖然沒有太大的亮點,但卻十分實用,這也是比較欣賞它的地方。

騏達的大部分車型均配備織物座椅,填充厚實且帶有韌性,是典型的日產式沙發,舒適性很好。身高172cm的體驗者在後排也有兩拳的腿部和一拳兩指的頭部空間,也算是比較給力的空間表現了。

動力方面,騏達全系搭載了1.6L自吸發動機,變速箱為5MT或者CVT,這個動力搭配也算是比較經典的,最大馬力為126pS,整個參數上並不差,實際表現在中低速的時候動力還是比較輕盈,可是一旦超過80km/h,發動機噪音就開始明顯,提速也比較吃力,這也是小排量汽車無法避免的了。

底盤的調校和舊款車型有所不同,支撐性方面有所增強,但還是保留了一定的韌性,以保證乘坐的舒適,處理小顛簸的時候還是比較從容的。至於指向方面,並不會模糊不清,手感輕盈緊緻,駕駛起來比較容易上手。

早期兩廂車比較火的主要是高爾夫、福克斯、飛度、騏達等等,而近年來騏達的銷量也不太火,這和它多年來變化不大的動力系統有一定的關係,即便如此,騏達的做工、空間擺在現時來看也是十分實用的一款家用車。

觀點:賣得最多的車,不一定就是最好的車,文中提到的幾款車型,雖然在銷量上屈居人下,但自身實力卻並不比“銷量王”要差,按說,與其為了跟風而跟風,倒不如找機會試試推薦的幾款車,你會發現原來還有更多好的選擇。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

※評比南投搬家公司費用收費行情懶人包大公開

搬家價格與搬家費用透明合理,不亂收費。本公司提供下列三種搬家計費方案,由資深專業組長到府估價,替客戶量身規劃選擇最經濟節省的計費方式

什麼?10萬預算就能買到獨立懸挂+帶T動力好的車型!_包裝設計

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

5T 152馬力+5擋手動。艾瑞澤7也是配備了多連桿獨立懸架,如果選擇1。5T車型,那麼絕對也是很具有駕駛激情的,因為車子馬力夠大,同時手動變速箱換擋也很清晰,再加上艾瑞澤7紮實的底盤調校,開起來絕對是非常的穩。另外艾瑞澤7用料也比較足,這點讓消費者也很滿意。

大多數人買車都是比較重視價格,只要價格不合適就說拜拜,但是有一部分人卻覺得車子開着爽了就好了,所以今天就給大家推薦幾款不到十萬的,開着比較有激情自主轎車。

廣汽傳祺GA3S視界

GA3S視界的車身尺寸為4590*1790*1490mm,軸距為2620mm,定位緊湊型轎車。GA3S視界看起來比較緊湊,側面腰線比較凌厲,看起來很帶感。

視界的動力系統為1.6L 122馬力+5擋手動/4擋自動,1.3T 137馬力+5擋手動。要說駕駛激情肯定是要推薦1.3T手動擋車型,GA3S視界配備了獨立懸架,同時發動機和變速箱匹配的很默契,換擋清晰,吸入感強,渦輪爆發力也比較足,再加上紮實的底盤調校,使得視界的操控性很不錯。

奇瑞汽車-艾瑞澤7

艾瑞澤7的車身尺寸為4652*1825*1483mm,

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

軸距為2700mm,也是定位緊湊型轎車,但是車子一點也不小,較大的車身保證了艾瑞澤7有着較大的乘坐空間。

艾瑞澤7的動力系統為1.6L 126馬力+5擋手動/CVT,1.5T 152馬力+5擋手動。艾瑞澤7也是配備了多連桿獨立懸架,如果選擇1.5T車型,那麼絕對也是很具有駕駛激情的,因為車子馬力夠大,同時手動變速箱換擋也很清晰,再加上艾瑞澤7紮實的底盤調校,開起來絕對是非常的穩。另外艾瑞澤7用料也比較足,這點讓消費者也很滿意。

比亞迪-比亞迪G5

G5的車身尺寸為4700*1790*1480mm,軸距為2670mm,G5的外觀尺寸比較大,所以 看起來更加的大氣,但是G5看起來比較沉穩,適合年更加成熟的消費者。

G5的動力系統為1.5T 154馬力+6擋手動/6擋雙離合,這款發動機為比亞迪自主研發的1.5T發動機,採用了缸內直噴、分層燃燒和可變氣門正時等三大技術,最大馬力154,最大扭矩240。數據表現很不錯,自動擋的0-100km/h加速為9.2s左右,提速很快,如果對雙離合不放心了那麼手動擋是更好的選擇。雖然動力十足,但是G5的底盤調教不是很好。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

中央宣講團在各地宣講黨的十九屆五中全會精神_網頁設計公司

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

台中景泰電動車行只是一個單純的理由,將來台灣的環境,出門可以自由放心的深呼吸,讓空氣回歸自然的乾淨,減少污染,留給我們下一代有好品質無空污的優質環境

2020-11-20 來源:央視《新聞聯播》

2020-11-20
來源:央視《新聞聯播》 分享到:
[打印]
字號:[大] [中] [小]
  連日來,中央宣講團成員走進湖南、山東、廣西等地,對黨的十九屆五中全會精神進行闡釋宣講,並深入基層與幹部群眾交流互動。   中央宣講團成員、財政部部長劉昆近日在湖南長沙做宣講報告,他從深刻認識我國進入新發展階段的重大意義、有利條件和重要特徵等四個方面對全會精神進行講解,

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

以設計的實用美學觀點,規劃出舒適、美觀的視覺畫面,有效提昇使用者的心理期待,營造出輕鬆、愉悅的網站瀏覽體驗。

並來到高校和文創產業園與幹部群眾座談。   在山東濟南,中央宣講團成員、自然資源部部長陸昊圍繞深刻認識全會的意義、2035年遠景目標和“十四五”時期主要目標任務等內容對全會精神進行闡釋。山東各地3萬多人在主會場和各分會場聽取了宣講報告。   宣講期間,陸昊還來到德州市的鄉村、社區,就耕地保護、村莊規劃、農村建設用地等問題與基層幹部群眾互動交流。   中央宣講團成員、生態環境部黨組書記孫金龍近日在廣西南寧做宣講報告。會後,他還深入廣西北部灣國際港務集團,就學習貫徹全會精神和大家交流。   來源:央視《新聞聯播》

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網站的第一印象網頁設計,決定了客戶是否繼續瀏覽的意願。台北網動廣告製作的RWD網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上它。