Web Hizmeti Arka Ucuna Sahip Sayısal Yukarı/Aşağı Denetimi Oluşturma (C#)

Christian Wenz tarafından

PDF’yi İndir

Kullanıcının onay kutusuna bir değer yazmasına izin vermek yerine, sayısal yukarı/aşağı denetimi (Windows'ta ve diğer işletim sistemlerinde var olan) daha rahat kanıtlanabilir. Varsayılan olarak NumericUpDown denetimi bir değeri her zaman 1 artırır veya azaltır, ancak web hizmeti daha fazla esneklik sağlar.

Genel Bakış

Kullanıcının onay kutusuna bir değer yazmasına izin vermek yerine, sayısal yukarı/aşağı denetimi (Windows'ta ve diğer işletim sistemlerinde var olan) daha rahat kanıtlanabilir. Varsayılan olarak, NumericUpDown denetim bir değeri her zaman 1 artırır veya azaltır, ancak bir web hizmeti daha fazla esneklik sağlar.

Adımlar

ASP.NET AJAX Denetim Araç Seti, bir metin kutusuna otomatik olarak iki düğme ekleyen genişleticiyi içerir NumericUpDown : Biri değerini artırmak için, biri de onu azaltmak için. Ancak denetim bir web hizmeti çağrısını (veya sayfa yöntemi çağrısını) da destekler. Yukarı veya aşağı düğmesine her tıklandığında JavaScript kodu web sunucusuna bağlanır ve orada bir yöntem yürütür. Yöntem imzası aşağıdaki gibidir:

public int MethodName(int current, string tag) {}

current bağımsız değişkeni metin kutusundaki geçerli değerdir; tag özniteliği genişleticinin özelliği olarak ayarlanabilen NumericUpDown (ancak gerekli olmayan) ek bağlam verileridir.

Bu örnek için, sayısal yukarı/aşağı denetimi yalnızca ikinin gücü olan değerlere izin verecektir: 1, 2, 4, 8, 16, 32, 64 vb. Bu nedenle, kullanıcı değeri artırmak istediğinde yürütülen yöntemin eski değerin iki katı olması gerekir; diğer yöntem değeri ikiye bölmelidir. İşte tam web hizmeti:

<%@ WebService Language="C#" Class="NumericUpDown1" %>
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[System.Web.Script.Services.ScriptService]
public class NumericUpDown1 : System.Web.Services.WebService
{
 [WebMethod]
 public int Up(int current, string tag)
 {
 if (current <= 536870912)
 {
 return current * 2;
 }
 else
 {
 return current;
 }
 }
 [WebMethod]
 public int Down(int current, string tag)
 {
 if (current >= 2)
 {
 return (int)(current / 2);
 }
 else
 {
 return current;
 };
 }
}

Son olarak, yeni bir ASP.NET sayfası oluşturun. Her zamanki gibi bir ScriptManager denetime, denetime TextBox ve denetime ihtiyacınız vardır NumericUpDownExtender . İkincisi için web hizmeti bilgilerini sağlamanız gerekir:

  • ServiceDownMethod aşağı web yönteminin veya sayfa yönteminin adı
  • ServiceDownPath aşağı hizmet yöntemiyle web hizmetinin yolu; Sayfa yöntemi kullanıyorsanız atla
  • ServiceUpMethod yukarı web yönteminin veya sayfa yönteminin adı
  • ServiceUpPath yukarı hizmet yöntemiyle web hizmetinin yolu; Sayfa yöntemi kullanıyorsanız atla

Sayfa için tam işaretleme aşağıdadır:

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
 <title>Control Toolkit</title>
</head>
<body>
 <form id="form1" runat="server">
 <asp:ScriptManager ID="asm" runat="server" />
 <div>
 How many MB do you want? <asp:TextBox ID="TextBox1" Text="32" runat="server" />
 <ajaxToolkit:NumericUpDownExtender ID="nud" runat="server"
 TargetControlID="TextBox1" Width="100"
 ServiceUpPath="NumericUpDown1.cs.asmx" 
 ServiceDownPath="NumericUpDown1.cs.asmx"
 ServiceUpMethod="Up" ServiceDownMethod="Down" />
 </div>
 </form>
</body>
</html>

Sayfayı çalıştırırsanız, üstteki düğmeye tıkladığınızda metin kutusundaki değerin her zaman iki katına çıktığına ve alttaki düğmeye tıkladığınızda ikiye katlandığına dikkat edin.

Yalnızca 2'nin gücünde sayılar görünür

Yalnızca 2'nin gücündeki sayılar görüntülenir (Tam boyutlu görüntüyü görüntülemek için tıklayın)