虽然大学学过很多计算机语言,但是现在工作是前端,一个刚入行的前端菜鸟,之前对于后台完全零接触,但是最近有个项目,我也是第一次真正接触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#的小总结的更多相关文章

  1. UE初写小项目问题之命令行报错:Expected indentation of 4 spaces but found 6

    一.问题 刚开始用一个小项目练手,用vue-cli初始化项目,直接安装了所有的东西,如vue-router.ESLint.unit tests等等,当时只懂得vue-router是什么. 问题来了,在 ...

  2. 手把手教你写一个RN小程序!

    时间过得真快,眨眼已经快3年了! 1.我的第一个App 还记得我14年初写的第一个iOS小程序,当时是给别人写的一个单机的相册,也是我开发的第一个完整的app,虽然功能挺少,但是耐不住心中的激动啊,现 ...

  3. ucgui汉字库存放到外部的flash(控件可用)及写外部FLASH小软件

    源:ucgui汉字库存放到外部的flash(控件可用)及写外部FLASH小软件 如何将ucgui的汉字库存放到外部的flash memory(ucgui)(汉字库)(外部flash) ucgui的字库

  4. 原生JS写了一个小demo,根据输入的数字生成不同背景颜色的小方块儿~

    昨天练习写了这个小demo,个人觉得通过设置定位元素left和top的值,来实现换行的功能,这种方法很巧妙~ 另外,如下代码中的随机颜色的获取,还请各位前辈多多指教:需要改进的地方:或者有没有更好的方 ...

  5. C语言写的2048小游戏

    基于"基于C_语言的2048算法设计_颜冠鹏.pdf" 这一篇文献提供的思路 在中国知网上能找到 就不贴具体内容了 [摘 要] 针对2048的游戏规则,分析了该游戏的算法特点,对其 ...

  6. 写一个php小脚本辅助渗透测试

    因为一个注入要爬行一些数据,然后写的一个小脚本,能写脚本来辅助渗透,也算是里程碑.哈哈哈 <?php $num = 1; while ($num <= 39) { $web_url = & ...

  7. 利用canvas写一个验证码小功能

    刚刚开始接触canvas,写个验证码小功能练练手,实现效果图如下: 主要代码如下: html <!DOCTYPE html> <html lang="en"> ...

  8. 【手记】小心在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这三个数,不可能返回其它 ...

  9. Python 每日提醒写博客小程序,使用pywin32、bs4库

    死循环延迟调用方法,使用bs4库检索博客首页文章的日期是否与今天日期匹配,不匹配则说明今天没写文章,调用pywin32库进行弹窗提醒我写博客.

随机推荐

  1. 学习记录--JVM内存分析

    今天刷牛客网的题时,看到了两位大神关于JVM内存分析的讲解,就顺手记录学习一下. JVM内存模型图 方法区域存放了所加载的类的信息(名称.修饰符等).类中的静态变量.类中定义为final类型的常量.类 ...

  2. RocketMQ顺序消息

    rocketmq的顺序消息需要满足2点: 1.Producer端保证发送消息有序,且发送到同一个队列.2.consumer端保证消费同一个队列. 生产端: RocketMQ可以严格的保证消息有序.但这 ...

  3. Vue介绍:vue导读1

    一.什么是vue 二.如何在页面中使用vue 三.vue的挂载点 四.vue的基础指令 一.什么是vue 1.什么是vue vue.js十一个渐进式javascript框架 渐进式:vue从控制页面中 ...

  4. Linux date cal bc和一些快捷键学习

    1 date 日期   2 cal 日历 具体每年日历  cal +年份 3 bc 计算器  如果有小数点需要scale命令,scale=数字 quit退出   4 [Tab]按键 :命令补全和档案补 ...

  5. ReaderWriterLockSlim使用示例

    /// <summary> /// ReaderWriterLockSlim使用示例 /// </summary> internal sealed class Transact ...

  6. C/C++代码规范

    零.前言 笔者最近在看开源代码,看到代码格式各自参差不齐,感觉像是各家各有所长.因此打算写一篇关于C/C++代码规范文章,请各位参考,并践踏批评. 一.文件排版 1. 包含头文件 • 先系统头文件,后 ...

  7. 一个 TCP 连接可以发多少个 HTTP 请求?

    曾经有这么一道经典面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式. ...

  8. vue-重要方法使用

    标签属性router-link-exact-active: 当页面正在方位是触发router-link-exact-active 标签router-link to= 使用a标签页面就会跳转,就不是单页 ...

  9. Spring事务管理----------整合学习版

    作者:学无先后 达者为先 Spring提供了一流的事务管理.在Spring中可以支持声明式事务和编程式事务. 一  spring简介 1 Spring的事务       事务管理在应用程序中起着至关重 ...

  10. C# HttpClient使用 网络(一)

    一.异步调用web服务  GetAsync() static void Main(string[] args) { Console.WriteLine("In main before cal ...