Razor的一些写法记录

Razor foreach获取索引方法

Razor与字符串组合

Razor 三元表达式

序列不包含任何匹配元素 EF多对多

报错的可能原因可能是EF的映射关系出了问题,如果Class之间有关联,需要手动设置好表关系
如:一个User有多个Device,一个Device可能属于多个User

ASP.net 微信公众平台JSAPI获取地理位置

ASP.Net获取地理位置
  项目需求需要在公众号内获取用户的地理位置,查了很多资料,大部分都是php的代码,很少有ASP.NET的代码,网上的东西大部分都不全,而且很晦涩,实际上很简单,这里给后来的朋友做个指引。
  JSAPI(不仅仅是地理位置)实际上的机制是,后台获取授权并获取相关数据,并把授权后的内容传入前台的JS里,前台的JS微信已经封装好了,调用即可返回所需数据,而实际的操作过程是,用户进入公众号的时候提示授权地理位置,进入到页面的时候就可以获取到地理位置。

相关步骤:
一、获取授权并取得数据
 1、第一步设置JS接口安全域名:公众号设置 功能设置 JS接口安全域名 设为你的网站域名即可。
 2、第二步 由于此接口需要使用到access_token,所以要获取access_token需要设置IP白名单,需要到公众号里面把服务器的IP填写进去。
 3、第三步授权取数据
 首先开看下微信JS需要的数据(通过后台获取的内容):
 appId 这个是公众号里面的
 timestamp 时间戳
 nonceStr 随机串
 jsApiList
 这个就是你要用什么接口,必须事先声明 比如: jsApiList[‘getLocation’,’playVoice’] 就是说你想调用获取地理位置和播放语音接口,详见:微信官方,我们就用jsApiList[‘getLocation’],其他的不管
 signature
 这个是签名,稍微麻烦一点,具体的获取流程是:通过AppID和secret获取access_token,然后通过access_token获取jsapi_ticket,然后通过签名算法生成signature,这些数据的获取官方都有详细的文档,总得来说要写很多,不怕麻烦看一下官方的文档一个个得写完,我这里用了一个第三方的微信SDK,Senparc,可以在NuGet里搜索Senparc.Weixin.MP就可以,代码很简单

C#代码:
首先记得引用

然后是page_load方法

至此获取了全部所需的内容,如不使用第三方SDK则参考https://mp.weixin.qq.com/wiki?action=doc&id=mp1421141115&t=0.5267792197713446#62

二、前台配置JS,前面已经在后台获取了相关的数据,现在只需要传入前台
 1、在前台页面引入http://res.wx.qq.com/open/js/jweixin-1.2.0.js
 2、把后台获取的内容传递给前台JS变量

 3、调用JSAPI方法:

ef迁移时,出现数据库中已存在名为XX的对象解决方式

在CodeFirst中,由于数据库中不存在__MigrationHistory表,系统认为需要重新创建表,实际表已经存在于数据库里,出现此错误 数据库中已存在名为XX的对象,在Add-Migration 后,打开Migrations/xxxx.cs文件,清空代码,如下:

然后执行Update-Database,数据中出现了__MigrationHistory表,继续执行 Add-Migration bb 和Update-Database,正常。

Max allowed object depth reached while trying to export from type System.Collections.Generic.List

使用LitJson报错 Max allowed object depth reached while trying to export from type System.Collections.Generic.List

改为使用Newtonsoft.Json.dll

使用Newtonsoft.Json.dll报错Self referencing loop detected with type,原因是实体集合里面存在导航属性,去掉相关属性即可