初写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库进行弹窗提醒我写博客.
随机推荐
- 学习记录--JVM内存分析
今天刷牛客网的题时,看到了两位大神关于JVM内存分析的讲解,就顺手记录学习一下. JVM内存模型图 方法区域存放了所加载的类的信息(名称.修饰符等).类中的静态变量.类中定义为final类型的常量.类 ...
- RocketMQ顺序消息
rocketmq的顺序消息需要满足2点: 1.Producer端保证发送消息有序,且发送到同一个队列.2.consumer端保证消费同一个队列. 生产端: RocketMQ可以严格的保证消息有序.但这 ...
- Vue介绍:vue导读1
一.什么是vue 二.如何在页面中使用vue 三.vue的挂载点 四.vue的基础指令 一.什么是vue 1.什么是vue vue.js十一个渐进式javascript框架 渐进式:vue从控制页面中 ...
- Linux date cal bc和一些快捷键学习
1 date 日期 2 cal 日历 具体每年日历 cal +年份 3 bc 计算器 如果有小数点需要scale命令,scale=数字 quit退出 4 [Tab]按键 :命令补全和档案补 ...
- ReaderWriterLockSlim使用示例
/// <summary> /// ReaderWriterLockSlim使用示例 /// </summary> internal sealed class Transact ...
- C/C++代码规范
零.前言 笔者最近在看开源代码,看到代码格式各自参差不齐,感觉像是各家各有所长.因此打算写一篇关于C/C++代码规范文章,请各位参考,并践踏批评. 一.文件排版 1. 包含头文件 • 先系统头文件,后 ...
- 一个 TCP 连接可以发多少个 HTTP 请求?
曾经有这么一道经典面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式. ...
- vue-重要方法使用
标签属性router-link-exact-active: 当页面正在方位是触发router-link-exact-active 标签router-link to= 使用a标签页面就会跳转,就不是单页 ...
- Spring事务管理----------整合学习版
作者:学无先后 达者为先 Spring提供了一流的事务管理.在Spring中可以支持声明式事务和编程式事务. 一 spring简介 1 Spring的事务 事务管理在应用程序中起着至关重 ...
- C# HttpClient使用 网络(一)
一.异步调用web服务 GetAsync() static void Main(string[] args) { Console.WriteLine("In main before cal ...

行舟逆水~