.net mvc 微信JsSdk认证用到的一些东西

.net mvc 局部视图的一些tips

一般来说写jssdk的wx.config这段js的时候 要每个页面都要引入js文件来设置调用jssdk接口,html里要引入一下js,Controller层需要用微信接口的地方也要调用jssdk的service,同时要传一个action的url进去进行sha1加密什么的,觉得重复代码太多了,突然想起还有个局部视图的东西,可以一个Controller一个局部页来进行代码复用。

这里简单写了个demo
视图页和局部页的action

public class JsSdkController : Controller
{
    
    public ActionResult Index()
    {
        return View();
    }


    public ActionResult JsSdkPartial()
    {

        string x = Request.Url.ToString();

        return View();
    }
}

视图页的html

@{
    Layout = null;
}

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        aaaaaaaaaaaaaaaaaaaaa
    </div>
    @Html.Action("jssdkpartial","jssdk")
    <div>
        bbbbbbbbbbbbbbbbbbbbbbbbbbb
    </div>
</body>
</html>

局部页的html

<script src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js" type="text/javascript"></script>}
hello world

局部页写jssdk相关的js代码 需要用到jssdk的视图页则用@Html.Action(actionName,ControllerName,new {args})来引入局部页,达成html和Controller以及js的复用。

重点来了,jssdk需要当前调用接口的页面的url来进行sha1加密验证,那么局部页本身也是有action和url的 直接访问局部页也是没有问题的,那么当前页面调用了局部页,局部页的request.url的结果是局部页还是布局页的url呢? 我这里做了一个测试,结论:直接访问局部页的话,url就是当前url,但是如果访问视图页,也就是调用局部页的页面,那么局部页的action的request.url的值是当前页面的url,而不是局部页的url,这样的话需要用jssdk的页面只需要写一句html.action来引入局部页就ok了,不需要在视图页的action里增加任何代码。

SHA1加密

private static string Sha1(string orgStr)
        {
            SHA1 sha1 = SHA1.Create();
            byte[] bytes = sha1.ComputeHash(System.Text.Encoding.Default.GetBytes(orgStr));
            return BitConverter.ToString(bytes).Replace("-", "").ToLower();
        }

生成Unix时间戳

private string CreateTimeStamp()
        {
            DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, 0);
            long totalSeconds = Convert.ToInt64((DateTime.Now - dt).TotalSeconds);

            return totalSeconds.ToString();
        }

从文件中读取json

public static JObject ReadJsonByFile(string filePath)
        {
            StreamReader file = File.OpenText(filePath);
            JsonTextReader jsonTextReader = new JsonTextReader(file);
            JObject jObject = (JObject)JToken.ReadFrom(jsonTextReader);
            return jObject;
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值