初写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 = ,
PageSize = ,
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前面加上对应的服务即可:行舟逆水~
初写C#的小总结的更多相关文章
- UE初写小项目问题之命令行报错:Expected indentation of 4 spaces but found 6
一.问题 刚开始用一个小项目练手,用vue-cli初始化项目,直接安装了所有的东西,如vue-router.ESLint.unit tests等等,当时只懂得vue-router是什么. 问题来了,在 ...
- 手把手教你写一个RN小程序!
时间过得真快,眨眼已经快3年了! 1.我的第一个App 还记得我14年初写的第一个iOS小程序,当时是给别人写的一个单机的相册,也是我开发的第一个完整的app,虽然功能挺少,但是耐不住心中的激动啊,现 ...
- ucgui汉字库存放到外部的flash(控件可用)及写外部FLASH小软件
源:ucgui汉字库存放到外部的flash(控件可用)及写外部FLASH小软件 如何将ucgui的汉字库存放到外部的flash memory(ucgui)(汉字库)(外部flash) ucgui的字库
- 原生JS写了一个小demo,根据输入的数字生成不同背景颜色的小方块儿~
昨天练习写了这个小demo,个人觉得通过设置定位元素left和top的值,来实现换行的功能,这种方法很巧妙~ 另外,如下代码中的随机颜色的获取,还请各位前辈多多指教:需要改进的地方:或者有没有更好的方 ...
- C语言写的2048小游戏
基于"基于C_语言的2048算法设计_颜冠鹏.pdf" 这一篇文献提供的思路 在中国知网上能找到 就不贴具体内容了 [摘 要] 针对2048的游戏规则,分析了该游戏的算法特点,对其 ...
- 写一个php小脚本辅助渗透测试
因为一个注入要爬行一些数据,然后写的一个小脚本,能写脚本来辅助渗透,也算是里程碑.哈哈哈 <?php $num = 1; while ($num <= 39) { $web_url = & ...
- 利用canvas写一个验证码小功能
刚刚开始接触canvas,写个验证码小功能练练手,实现效果图如下: 主要代码如下: html <!DOCTYPE html> <html lang="en"> ...
- 【手记】小心在where中使用NEWID()的大坑 【手记】解决启动SQL Server Management Studio 17时报Cannot find one of more components...的问题 【C#】组件分享:FormDragger窗体拖拽器 【手记】注意BinaryWriter写string的小坑——会在string前加上长度前缀length-prefixed
[手记]小心在where中使用NEWID()的大坑 这个表达式: ABS(CHECKSUM(NEWID())) % 3 --把GUID弄成正整数,然后取模 是随机返回0.1.2这三个数,不可能返回其它 ...
- Python 每日提醒写博客小程序,使用pywin32、bs4库
死循环延迟调用方法,使用bs4库检索博客首页文章的日期是否与今天日期匹配,不匹配则说明今天没写文章,调用pywin32库进行弹窗提醒我写博客.
随机推荐
- Nginx笔记一
nginx: 为什么选择nginx: nginx是一个高性能的web和反向代理服务器. 作为web服务器:使用更少的资源,支持更多的并发连接,更高的效率,能够支持高达5w个并发连接数的相应, 作为 ...
- python3 中的cls和self的区别 静态方法和类方法的区别
一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某 ...
- PHPExcel的简单使用
一.在做PHP开发时,我们会遇到把数据导出变为execl表格的形式,使用PHPExcel就可以,下载地址:https://github.com/PHPOffice/PHPExcel,下载后会显示这么多 ...
- Django_06_项目完成
项目完成 基本知识点都学完了,接下来完成示例项目 现在还需要的代码包括三个方面,三个方面顺序不分先后 1.定义视图 2.定义URLconf 3.定义模板 定义视图 编写booktest/views.p ...
- Mybatis入门配置及第一个Mybatis程序
目的:使用mybatis来进行对数据库表的操作 第一步:引入jar包 我这里是创建的maven工程 第二步:创建数据表user 第三步:创建实体类 实体类放在包 com.xxx.pojo 下,包名可自 ...
- Django上手体验,对比Asp.Net Core框架
一.前言 最近经常听说“人生苦短,我选python”这句话,处于好奇,笔者对python相关技术和web框架做了一番研究,本篇就对python web框架代表作Django和微软主打web框架Asp. ...
- PAT Basic 1082 射击比赛 (20 分)
本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟.我们假设靶心在原点(0,0). 输入 ...
- String特性之 “字符串驻留池”
1. 字符串驻留池,就是一块与堆区并行的存放字符串对象的内存区,JVM的驻留池机制规定: 在池中创建一个String对象,第二行会先在池中寻找是否有值与"abc"相同的String ...
- wampserver apache 500 Internal Server Error解决办法
Internal Server ErrorThe server encountered an internal error or misconfiguration and was unable to ...
- css网页使用自定义字体方法
@font-face可以加载服务器端的字体到浏览器端,这样设计师就可以不受客户端字体库的限制. 一般来说有四种格式的字体文件即可覆盖所有浏览器.这四种格式为: .EOT:适用于Internet Exp ...

行舟逆水~