初写C#的小总结

虽然大学学过很多计算机语言,但是现在工作是前端,一个刚入行的前端菜鸟,之前对于后台完全零接触,但是最近有个项目,我也是第一次真正接触C#,中间遇到了一些小问题,就做个总结记录下,真的是超级简单的小知识点。。。

项目工具:Visual Studio  2015

一、ASP.NET MVC模式的简单理解

模型(Model)、控制器(Controller)、视图(View)组成MVC模式,模型和控制器是一一对应的。

模型  定义数据结构,负责与数据库沟通,从数据库读取数据,将数据写入数据库,总之,和“数据”有关的任务,都要在Model 里完成定义。

控制器  从模型中取得数据,然后用于写项目功能,并且,一个系统有很多页面(View),而控制器就决定是哪个页面显示给用户。

视图  输出:从控制器取得数据,显示在用户界面上,将控制器传送的数据显示于界面,数据是来自模型的定义;

        输入:将数据送回控制器,决定数据应该送到哪一个Controller 的Action 中,决定数据传送的方式,例如,GET、POST、XML HTTP Request (XHR) 。  要显示在网页上的逻辑都是View负责的。

二、服务引用

1、添加服务引用

例,WCF设计文档中,附件模块的服务是:

在VS 中,Service References上右键,“添加服务引用”:

按照文档中服务地址的格式写入地址,点击“转到”,如果正确,下面会提示找到了一个服务,然后写“命名空间”也就是服务的名称,最后点击“确定”即可。

2、配置服务引用

有的时候,打开项目,需要修改服务引用:

例,地址:“http:localhost:8880/device/datatypeService.svc”,需要将localhost改成本地测试服务器地址,端口号不用改。

3、更新服务引用

当服务有更改的时候,就得更新服务引用,在对应服务上右键更新即可。

三、控制器:::ActionResult和JsonResult

ActionResult ——下行(从服务器取出来的数据)

JsonResult——上行(向服务器添加东西)

四、类型转换

1、string->Guid

eg:  Guid.Parse(req.Id)     // Id 是string类型

2、Guid->string 

eg: rese.Guid.ToString()       // Guid 是 Guid类型

3、int->string

eg:  i.ToString()      // i 是int类型

4、string->int

eg: int.Parse(s)    

      或者    

      int.TryParse(s, out i)               // s 是string类型,i 是int类型

5、DateTime->string

eg: dt.ToString("yyyy-MM-dd HH:mm:ss")     // dt 是DateTime类型,转换为括号中的时间格式

6、string->DateTime

eg: Convert.ToDateTime(string)     // string格式有要求,必须是yyyy-MM-dd hh:mm:ss

     或者  

     DateTime.ParseExact()  :   

     string dateString = "20110526";

     DateTime dt = DateTime.ParseExact(dateString, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);  

     [OR]    DateTime dt = DateTime.ParseExact(dateString, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);

五、数组用Length  ,  集合用 Count

项目中有个用户组,一个班级或者一个院系就是一个组,班级人数 就是 组成员数。

            foreach (var rese in reses)
                {
                    var t = new Classes();

                    t.Guid = rese.Guid;
                    t.Name = rese.Name;
                    t.Type = rese.Type;
                    t.CreateDate = rese.CreateDate;

                    // 班级人数 = 组成员数
                    var r = client.GetMemberList(new GetMemberListReq()
                    {
                        PageIndex = 1,
                        PageSize = 200,
                        GroupGuid=rese.Guid
                    });

                    t.Num = r.Length;

                    ret.Add(t);

                }

上面的 GetMemberList 获得的是一个数组,要用Length来取得它的长度,这个倒是跟js一样。

六、生成Guid

var  t =  Guid.NewGuid();

七、页面中比如“添加”、“删除”等功能的实现

页面和后台交互用Ajax调用控制器中JsonResult:::

function OnDelete() {
        try {
            $.ajax({
                type: "POST",
                url: "/UserGroup/Classes/DoDelete",
                data: {
                    Guid: classes_Id
                },
                dataType: "json",
                async: false,
                success: function (e) {
                    window.location.reload();
                },
                error: function (e) {
                    alert("error:" + e);
                }
            });
        } catch (e) {
            alert("error:" + e);
        }
    }

1、Url 的书写形式是“/域/控制器/JsonResult名(相应的操作)”

2、data 传给接口的数据字段,要与控制器中"JsonResult名"中的模型中的字段一致,说的有点乱,是这样:

public JsonResult DoDelete(DeleteReq req)
        {
            using (var client = new GroupServiceClient())
            {
                var res = client.Delete(new DeleteGroupReq()
                {
                    Guid = req.Guid
                });

                HttpContext.Response.StatusCode = res.status;
            }

            return Json("");

        }

        public class DeleteReq
        {
            public Guid Guid { get; set; }
        }
八、 重名

在写控制器的时候,自己定义的模型与用户组服务中的AddMemberReq重复了:

这是我写的时候没发现,疏忽了,但是收获了解决问题的方法,
在AddMemberReq前面加上对应的服务即可:



行舟逆水~


      

posted @ 2017-01-13 17:10  名字被占用。  阅读(288)  评论(0编辑  收藏  举报