Asp.net Dynamic Data之四定義欄位的顯示/編輯模板和自訂驗證邏輯

來源:互聯網
上載者:User
Asp.net Dynamic Data之四定義欄位的顯示/編輯模板和自訂驗證邏輯

Asp.net Dynamic data提供了一些欄位模板有比如在Detail View/ListView中顯示用的和在Edit View/Insert View中使用的編輯欄位,同時也可以自訂你所需要的欄位模板。和特殊的顯示格式。

    比如:我們需要對日期類型的輸出進行格式化{0:yyyy-mm-dd},對於日期的編輯我需要使用一個編輯控制項供我們選擇;

    一些常用的校正比如該欄位是Int型並且編輯時候大小在1-100之間,顯示的時候對不不同的值加於顏色的區別。



    比如我們需要對輸入欄位的值進行更嚴格的商務邏輯或是內容相關的關聯的驗證那又要如何?呢。

DEMO1

下面我們來看看如何?這些效果最簡單如何格式化顯示欄位內容,下面是三種不同的顯示格式


代碼


Partial Order 類是LINQ實體中定義的Order;在上面加上MetadataType的特性,下面定義一個MetadataOrder的內容,欄位名需要和Order中定義的一致,然後在欄位上加上顯示格式的特性DisplayFormat(Dataformatstring),當然還支援多種數字類型字元竄類型;從上我們還看到有一個UIHint特性,定義顯示或是編輯時使用的欄位模板,比如UIHint("DevDateTime")使用自己定義的日期欄位模板,Rang(1,100,ErrorMessage)這個就定義簡單的驗證邏輯類似ValidateControl。

DEMO2

自訂欄位模板根據數字顯示不同的顏色


代碼

CustomFieldTemplate.ascx

<%@ Control Language="C#" AutoEventWireup="true"

CodeFile="CustomFieldTemplate.ascx.cs"

Inherits="DynamicData_FieldTemplates_CustomFieldTemplate" %>

 

<asp:Label runat="server" ID="Label1" Text="<%# FieldValueString %>" />

CustomFieldTemplate.ascx.cs

public partial class DynamicData_FieldTemplates_CustomFieldTemplate :

System.Web.DynamicData.FieldTemplateUserControl {

 

public override Control DataControl {

get {

return Label1;

}

}

 

protected override void OnDataBinding(EventArgs e)

{

// Read current quantity value.

Int16 currentQty = (Int16)FieldValue;

if (FieldValue != null)

{

// Set quantity warning thresholds.

int min = 30;

int max = 1500;

if (currentQty < min)

{

// Quantity is less than the minimum

// warning threshold.

Label1.ForeColor = System.Drawing.Color.Red;

Label1.Font.Bold = true;

}

else

if (currentQty > max)

{

// Quantity is greater than the maximum

// warning threshold.

Label1.ForeColor = System.Drawing.Color.Blue;

Label1.Font.Bold = true;

}

}

}

}

 

自訂模板繼承System.Web.DynamicData.FieldTemplateUserControl 具體的我就不多說了這一塊比較簡單

 

DEMO3

輸入的ShipCity必須是R開頭。


 

代碼


 

你可以針對每個欄位進行驗證 ,這裡要注意的是VaildationException而不是Exception;


另外你也可以根據不同操作區定義你的驗證方式,比如Insert,Update,Delete

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.