初写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前面加上对应的服务即可:
行舟逆水~