虽然大学学过很多计算机语言,但是现在工作是前端,一个刚入行的前端菜鸟,之前对于后台完全零接触,但是最近有个项目,我也是第一次真正接触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. 用window.showModalDialog()打开的页面Request.UrlReferrer为null

    今天在解决一个问题,怎么也找不到解决方案.我的一个窗体是IE通过window.showModalDialog()打开的,但为了防止用户手工输的地址,所以我需要判断是通过别的页面调整获得,用Reques ...

  2. linux 使用 rz 上传和 sz下载 命令

    linux系统 root权限 lrzsz安装包 ①.在线安装-执行命令 yum install lrzsz  离线安装-需要提前准备好安装包 编译安装 root 账号登陆后,依次执行以下命令: tar ...

  3. djnago中间件

    前言 在form表单中当我们提交表单时会有这样的错误>>>>请求post时候的会出现403 forbidden,那我们就说说这个类中间件,(csrf只是中间件的一种) 以前我们 ...

  4. 在VS2017添加MVC项目

    以前一直是用vs2012 MVC直接可以找到 在公司用的是vs2017  今天想创建一个MVC,和vs不同啊!!! 居然找不到MVC  然后找找找  ,突然想到创建asp.net 项目的时候发现了MV ...

  5. 04_ Flume采集文件到HDFS案例

    采集需求:比如业务系统使用log4j生成的日志,日志内容不断增加,需要把追加到日志文件中的数据实时采集到hdfs 根据需求,首先定义以下3大要素 采集源,即source——监控文件内容更新 :  ex ...

  6. OpenLDAP 搭建入门

    系统环境:CentOS 7 slapd版本:2.4.44 简介 OpenLDAP是一款轻量级目录访问协议,基于X.500标准的,支持TCP/IP协议,用于实现账号集中管理的开源软件,提供一整套安全的账 ...

  7. Swagger保姆级教学

    Swagger保姆级教学 Swagger 简介 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样 ...

  8. P1582 倒水 题解

    来水一发水题.. 题目链接. 正解开始: 首先,我们根据题意,可以得知这是一个有关二进制的题目: 具体什么关系,怎么做,我们来具体分析: 对于每个n,我们尝试将其二进制分解,也就是100101之类的形 ...

  9. 中文录入问题 转载自:http://blog.csdn.net/ichsonx/article/details/8625925

    2.1中文录入问题 默认安装的msysgit的shell环境中无法输入中文,为了能在shell界面输入中文,需要修改配置文件/etc/inputrc,增加或修改相关配置如下: #disable/ena ...

  10. 获取节点 document.getElementBy{Id,Name,TagName,ClassName

    document.getElementById(" "); document.getElementByName(" "); document.getElemen ...