金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > 编程 > 之MVC3继续整理问题,ArrayList不显示的原因和解决

之MVC3继续整理问题,ArrayList不显示的原因和解决

发布时间:2019-11-01 17:41编辑:编程浏览(198)

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便

     

    背景:无意间遇到了一个不大不小的问题,希望对一些遇到的人有所帮助!

    1、注释验证
    [EmailAddress(ErrorMessage = "×")],用的MVC3框架,此处报错,找不到类“EmailAddress”,看到原文有using System.ComponentModel.DataAnnotations.Schema;但引用的时候同样报错,using System.ComponentModel.DataAnnotations前面没有错,直到加上Schema后就开始报错了。于是直接改成[RegularExpression(@"(w)+(.w+)*@(w)+((.w+)+)",ErrorMessage = "{0}格式不正确")]
    2、new
    public new string Password { get; set; }
    new,是用来改变一个方法或是一个属性,在其基类中所实现的行为的。 
    具体在程序片段中: public new string Password 
    Password,是当前派生类的一个 返回string类型的属性,这个属性是继承而来的,如果不想这个属性如其在基类中所定义的那样实现,可以覆写这个属性:public string Password 
    注意,上面是没有加new的,这样写没有问题,但是编译器会发出警告(它担心你不小心覆写了基类的Password属性),为了不让编译器发出警告(也表明你的确是想覆写这个属性),你可以加上new,就像这样:public new string Password
    如此,编译器就知道,你很清楚,是在覆写该属性,也就不会报警了。
    3、/// <summary>
    
    https://msdn.microsoft.com/zh-cn/library/5ast78ax.aspx
        eg:
         /// <summary>
            ///取超连接参数值
            /// </summary>
            /// <param name="i_Parameter">超连接参数名</param>
            /// <param name="i_defValue">当取值为""时设置的默认值</param>
            /// <returns>返回超连接参数值</returns>
            public static string GQ(string i_Parameter, string i_defValue){}
    
    这是一个完整的写法, summary这是指明函数的一些参数说明,在vs软件里当你使用这个函数时,他便会有代码提示的
    param里的name就设置成你函数的参数名啦
    /// <param name="i_defValue">当取值为""时设置的默认值</param>
    这样写便知道在使用哪个参数了,i_defValue对应你下面函数里的一个参数名,当取值为""时设置的默认值是提示内容
    4、return default(T)
    
    default 为泛型代码中的默认关键字
    
    给定参数化类型 T 的一个变量 t,只有当 T 为引用类型时,语句 t = null 才有效;只有当 T 为数值类型而不是结构时,语句 t = 0 才能正常使用。解决方案是使用 default 关键字,此关键字对于引用类型会返回空,对于数值类型会返回零。对于结构,此关键字将返回初始化为零或空的每个结构成员,具体取决于这些结构是值类型还是引用类型。以下来自 GenericList<T> 类的示例显示了如何使用 default 关键字。
    5、@Html.LabelFor
    

    一、目标样式

    图片 1

    我们要实现上图中的效果,需要如下的操作:

    一、问题

    WinForm DataGridView 绑定泛型List (List<T>)/ArrayList不显示,UI

    图片 2

    代码如下:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.OleDb;
    using System.IO;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public delegate T BorrowReader<out T>(IDataReader reader);
    
        public partial class FormMain : Form
        {
            public FormMain()
            {
                InitializeComponent();
    
            }
    
            private List<User> GetUsers(IDataReader reader)
            {
                var list = new List<User>();
                while (reader.Read())
                {
                    list.Add(new User()
                    {
                        ID = reader.GetInt32(reader.GetOrdinal("ID")),
                        UserName = reader.GetString(reader.GetOrdinal("UserName")),
                        NickName = reader.GetString(reader.GetOrdinal("NickName")),
                        Phone = reader.GetString(reader.GetOrdinal("Phone")),
                        QQ = reader.GetString(reader.GetOrdinal("QQ")),
                    });
                }
                return list;
            }
    
            private void btnTest_Click(object sender, EventArgs e)
            {
                dataGridView1.AutoGenerateColumns = false;
                var list = MyDb.LendReader("select * from Users where 0=0", GetUsers);
                dataGridView1.DataSource = list;
            }
        }
    
        public class User
        {
            public int ID;
            public string UserName;
            public string NickName;
            public string Phone;
            public string QQ;
    
        }
    
        public class MyDb
        {
            public static T LendReader<T>(string sql, BorrowReader<T> borrowReader)
            {
                using (OleDbConnection connection = CreateConnection())
                {
                    connection.Open();
                    OleDbCommand c = new OleDbCommand(sql, connection);
                    OleDbDataReader r = c.ExecuteReader();
                    return borrowReader(r);
                }
            }
    
            private static OleDbConnection CreateConnection()
            {
                string dbName = Path.Combine(Application.StartupPath, "MyData.mdb");
                OleDbConnection c = new OleDbConnection
                {
                    ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName
                };
                return c;
            }
        }
    }
    
    1.  @Html.LabelFor(model=>mode.Name) 输出:  <label for="Name">Name</label>  
    2. @Html.LabelFor(model=>mode.Name,"姓名") 输出:<label for="name">姓名</label>  
    3. 如果在上面实体添加[DisplayName("姓名")]特性(引用System.ComponentModel;)则会显示:  
    4. <label for="Name">姓名</label>用于显示汉字很方便  

    1.从工具栏上的”Smobiler Components”拖动一个PieChart控件到窗体界面上

    图片 3

    二、解决方法

    其实很简单,只是很多朋友可能没有考虑到,因为这压根不是什么泛型List或者ArrayList的问题,

    只要改代码:

        public class User
        {
            public int ID;
            public string UserName;
            public string NickName;
            public string Phone;
            public string QQ;
        }
    

    为:

        public class User
        {
            public int ID{ get; set; }
            public string UserName { get; set; }
            public string NickName { get; set; }
            public string Phone { get; set; }
            public string QQ { get; set; } 
        }
    

    就好了

    6、@Html.EditorFor

    2.修改PieChart的属性

    三、简单讲解

    没定义get、set的是字段,定义了就是属性了,为了安全性考虑,DataGridView 的数据源绑定只能是被公开了的属性,而无权访问字段。很多其他控件也有同样的情况。

    @Html.EditorFor(mode=>mode.Name)
    如果返回的View给Student实体赋予值,则输出输出<input class="text-box single-line" id="Name" name="Name" type="text" value="默认值" />否则Value为"";
    b、@Html.EditorFor(mode=>mode.Name,"templateName")
    第二个参数为模版名称,模版的定义:
    首先在目录View/Shared/建立文件夹EditorTemplates/templateName.cshtml 即:View/Shared/EditorTemplates/templateName.cshtml
    注:这务必用EditorTemplates作为文件夹
    templateName.cshtml代码为: @Html.DropDownList("",new SelectList(new []{"1","2","3"}))表示一个值为1,2,3的下拉列表
    这时就可以调用@Html.EditorFor(mode=>mode.Name,"templateName"),则显示成一个下拉列表,如果模版中设置的一个文本框则显示成文本框。
    同时,也可以在实体Student中的Name属性加上[UIHint("templateName")]特性 如果加上这个则可在调用的时候不用显示指定模版名称
    用@Html.EditorFor(mode=>mode.Name)即可显示成下拉框,同时所有用这个字段的都将变成下拉列表
    相当与Html中的Input控件
    @Html.EditorFor(model=>model.Age)
    页面显示为:   <input id="Age" name="Age" type="text" value="" />

    本文由金沙国际官网发布于编程,转载请注明出处:之MVC3继续整理问题,ArrayList不显示的原因和解决

    关键词:

上一篇:没有了

下一篇:统计算法_探索性统计