初写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库进行弹窗提醒我写博客.
随机推荐
- docker第一篇 容器技术入门
Container 容器是一种基础工具,泛指任何可以容纳其它物品的工具. Linux Namespaces (docker容器技术主要是通过6个隔离技术来实现) namespace 系统调用参数 ...
- SpringBoot--多环境部署配置文件
在resources 下创建 application-{profile}.properties 的配置文件,其中profile是任意名字: test:测试环境 prod:线上环境 pre-prod:预 ...
- python初始化定长列表
>>> lst = ['x' for n in range(5)] >>> print(lst) ['x', 'x', 'x', 'x', 'x'] >> ...
- go语言入门(6)复合类型
1,分类 2,指针 指针是一个代表着某个内存地址的值.这个内存地址往往是在内存中存储的另一个变量的值的起始位置. 1)基本操作 Go语言虽然保留了指针,但与其它编程语言不同的是: 默认值 nil,没有 ...
- scp上传文件到远程服务器
scp -P 22 E:/download/2028792_www.yeves.cn_nginx/cloud.pem root@ip:/usr/local/src
- python 删除特定字符所在行
#查询文件中含有特殊字符串的行 #!/usr/bin/python # -*- coding:utf- -*- import re file1 = open('test.txt','r+') istx ...
- 第二章、前端之css
目录 第二章.前端之css 一.css介绍 二.css语法 三.css几种引入方式 四.css选择器 五.css属性相关 六.css盒子模型 第二章.前端之css 一.css介绍 css(Cascad ...
- Delphi 类类型
- 反编译DLL并修改DLL中的内容
使用场景:针对当前用户因不愿意进行软件版本升级,但又希望可以解决当前问题,此时可以考虑通过反编辑DLL进行修改内容,然后重新生成新的DLL 操作步骤: 1.首先使用ILSpy.exe反编译DLL,查看 ...
- Event Binding in Angular
https://www.pluralsight.com/guides/angular-event-binding Introduction In this guide, we will explore ...