SHOWcode

2018年10月30日 星期二

ASP.NET TextBox控制項設置ReadOnly="true"後臺取不到值


原文連結

ASP.NET TextBox控制項設置ReadOnly="true"後臺取不到值

當TextBox設置了ReadOnly="true" 後,要是在前臺為控制項添加了值,後臺是取不到的,值為「空」
原理沒想通,說不清楚微軟是出於什麼考慮的,
不過有時是要我們能通過前臺腳本來填充值,並不希望使用者修改其控制項內容,這時就比較尷尬了。
剛開始是換成Html 裡的 <input type="text" readonly="readonly" > ,不過後來發現這個工作量是很大的,
所以網上搜了下,沒找出TextBox ReadOnly="true" 頁面填充值取不到的原因,不過問題還算解決了。
正文:
出於vs2005對頁面代碼的規範與安全,個人意見是使用第二種方法
知道為什麼TextBox設置了ReadOnly屬性後,取不到值原理的,給下說明,謝謝啦!
在.NET 2.0 下,當頁面上的某個TextBox 設置了屬性ReadOnly="True"時,通過用戶端腳本給其賦值後,在後臺代碼中訪問其Text屬性卻無法獲得該值。經過嘗試,發現可以通過如下的方式解決這個問題:

方法一:
不設置ReadOnly屬性,通過onfocus=this.blur()來類比,如下:
<asp:TextBox ID="TextBox1" runat="server" onfocus=this.blur()></asp:TextBox>
在此情況下,當文字方塊獲得焦點時便立刻失去,所以也無法手動修改其內容,能夠類比ReadOnly,在後臺代碼中也能通過Text屬性,正常獲取通過腳本在用戶端設置的值;

方法二:
設置了ReadOnly屬性後,通過Request來取值,如下:
前臺代碼:
<asp:TextBox ID="TextBox1" runat="server" ReadOnly="True" ></asp:TextBox>
後臺代碼:
string Text = Request.Form["TextBox1"].Trim();

方法三:
在Page_Load()正設置文字方塊的唯讀屬性,在前臺不設置。
就能正常讀取,如下:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
TextBox1.Attributes.Add("readonly","true");
}
}

2018年10月2日 星期二

C# 取得檔案最後修改時間



  foreach (string fname in System.IO.Directory.GetFileSystemEntries(@"C:\Users\joshs"))
            {
                //if (fname.IndexOf(".gif") > 0) {
                //MessageBox.Show("檔案建立日期" + fname.ToString(), "FileInfo");
                //     MessageBox.Show("檔案建立日期" + fname.ToString(), "FileInfo");
                //}

                MessageBox.Show("檔案最後修改時間:" + File.GetLastWriteTime(fname).ToString());

            }

2018年10月1日 星期一

字串 取值方法(第二階段) Class 取得 C#.NET 控制項


字串 取值方法(第二階段) 先在在 其他NET 建置laceHolder


#region BUTTON
    protected void lbtn_Click(object sender, EventArgs e)
    {
        Page page = (Page)System.Web.HttpContext.Current.Handler; //Page 給 class  這是重點

        Button lbtn = (Button)sender;
        String buttonid = lbtn.ID.ToString();//button 按鈕ID
       
        Label labtn = (Label)page.FindControl("lb_func2");  //取得控項
        TextBox txttn = (TextBox)page.FindControl("txt_func2");
       

       String mail_check = fun_sg_mail();  //

        if (mail_check == "success") {
            page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", "alert('信件寄出');", true);
        }
        else {
            page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", "alert('通報信件尚未寄出,麻煩幫忙管理員,謝謝');", true);
        }


    }
#endregion


字串 調用方法(第一階段)


  public static object callFunc(string funcName)
    {
        //反射獲取 命名空間+類名稱
//using System.Reflection;
        String TXSR = funcName;
        string className = "activefuction";
        string methodName = funcName;            //傳遞参数           
                                                 // Object[] paras = new Object[] { "string" };
        var t = Type.GetType(className);
        object obj = Activator.CreateInstance(t);
        try
        {
            #region 方法一                //直接调用               
            MethodInfo method = t.GetMethod(methodName);
            //method.Invoke(obj, paras);

            return method.Invoke(obj, null);

            // return method.Invoke(obj, null);
            #endregion

            #region 方法二               
            //MethodInfo[] info = t.GetMethods();
            //for (int i = 0; i < info.Length; i++)
            //{
            //    var md = info[i];                    //方法名                   
            //    string mothodName = md.Name;                    //参数集合                 
            //    ParameterInfo[] paramInfos = md.GetParameters();                    //方法名相同且參數個數一樣                 
            //    if (mothodName == methodName && paramInfos.Length == paras.Length)
            //    {
            //        md.Invoke(obj, paras);
            //    }
            //}
            #endregion

        }
        catch (Exception ex)
        {
            throw ex;
        }


    }


    #endregion

Jenkins-mail

參考:http://www.linuxea.com/1767.html 前置作業略過~有空再補 Mailer Plugin post { success { emailext ( subject: &...