Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
ClientServerProject
提交
69cd7ed3
C
ClientServerProject
项目概览
jobily
/
ClientServerProject
2023-09-12 01:32:09同步失败
通知
2
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
ClientServerProject
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
69cd7ed3
编写于
5月 04, 2018
作者:
Richard__Hu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update nuget component. add some comments
上级
1fedeaae
变更
26
展开全部
隐藏空白更改
内联
并排
Showing
26 changed file
with
375 addition
and
322 deletion
+375
-322
ClientsLibrary/ClientsLibrary.csproj
ClientsLibrary/ClientsLibrary.csproj
+2
-2
ClientsLibrary/packages.config
ClientsLibrary/packages.config
+1
-1
CommonLibrary/CommonLibrary.csproj
CommonLibrary/CommonLibrary.csproj
+2
-2
CommonLibrary/packages.config
CommonLibrary/packages.config
+1
-1
HslCommunicationNetTestTool/HslCommunicationNetTestTool.csproj
...mmunicationNetTestTool/HslCommunicationNetTestTool.csproj
+2
-2
HslCommunicationNetTestTool/packages.config
HslCommunicationNetTestTool/packages.config
+1
-1
README.md
README.md
+21
-2
软件系统客户端Wpf/packages.config
软件系统客户端Wpf/packages.config
+3
-2
软件系统客户端Wpf/软件系统客户端Wpf.csproj
软件系统客户端Wpf/软件系统客户端Wpf.csproj
+4
-4
软件系统客户端模版/packages.config
软件系统客户端模版/packages.config
+2
-1
软件系统客户端模版/软件系统客户端模版.csproj
软件系统客户端模版/软件系统客户端模版.csproj
+2
-2
软件系统服务端模版/FormServerWindow.Designer.cs
软件系统服务端模版/FormServerWindow.Designer.cs
+13
-13
软件系统服务端模版/FormServerWindow.cs
软件系统服务端模版/FormServerWindow.cs
+77
-46
软件系统服务端模版/packages.config
软件系统服务端模版/packages.config
+2
-1
软件系统服务端模版/软件系统服务端模版.csproj
软件系统服务端模版/软件系统服务端模版.csproj
+2
-2
软件系统浏览器模版/ApplicationInsights.config
软件系统浏览器模版/ApplicationInsights.config
+5
-3
软件系统浏览器模版/Scripts/jquery.unobtrusive-ajax.js
软件系统浏览器模版/Scripts/jquery.unobtrusive-ajax.js
+29
-39
软件系统浏览器模版/Scripts/jquery.unobtrusive-ajax.min.js
软件系统浏览器模版/Scripts/jquery.unobtrusive-ajax.min.js
+16
-20
软件系统浏览器模版/Scripts/jquery.validate-vsdoc.js
软件系统浏览器模版/Scripts/jquery.validate-vsdoc.js
+2
-2
软件系统浏览器模版/Scripts/jquery.validate.js
软件系统浏览器模版/Scripts/jquery.validate.js
+89
-62
软件系统浏览器模版/Scripts/jquery.validate.min.js
软件系统浏览器模版/Scripts/jquery.validate.min.js
+0
-0
软件系统浏览器模版/Scripts/jquery.validate.unobtrusive.js
软件系统浏览器模版/Scripts/jquery.validate.unobtrusive.js
+27
-25
软件系统浏览器模版/Scripts/jquery.validate.unobtrusive.min.js
软件系统浏览器模版/Scripts/jquery.validate.unobtrusive.min.js
+5
-20
软件系统浏览器模版/Web.config
软件系统浏览器模版/Web.config
+12
-8
软件系统浏览器模版/packages.config
软件系统浏览器模版/packages.config
+18
-18
软件系统浏览器模版/软件系统浏览器模版.csproj
软件系统浏览器模版/软件系统浏览器模版.csproj
+37
-43
未找到文件。
ClientsLibrary/ClientsLibrary.csproj
浏览文件 @
69cd7ed3
...
...
@@ -33,8 +33,8 @@
<Reference
Include=
"CommonLibrary"
>
<HintPath>
..\CommonLibrary\bin\Debug\CommonLibrary.dll
</HintPath>
</Reference>
<Reference
Include=
"HslCommunication, Version=5.0.
4
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
4
\lib\net35\HslCommunication.dll
</HintPath>
<Reference
Include=
"HslCommunication, Version=5.0.
6
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
6
\lib\net35\HslCommunication.dll
</HintPath>
</Reference>
<Reference
Include=
"Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Newtonsoft.Json.11.0.2\lib\net35\Newtonsoft.Json.dll
</HintPath>
...
...
ClientsLibrary/packages.config
浏览文件 @
69cd7ed3
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
packages
>
<
package
id
=
"HslCommunication"
version
=
"5.0.
4
"
targetFramework
=
"net35"
/>
<
package
id
=
"HslCommunication"
version
=
"5.0.
6
"
targetFramework
=
"net35"
/>
<
package
id
=
"Newtonsoft.Json"
version
=
"11.0.2"
targetFramework
=
"net35"
/>
</
packages
>
\ No newline at end of file
CommonLibrary/CommonLibrary.csproj
浏览文件 @
69cd7ed3
...
...
@@ -30,8 +30,8 @@
<WarningLevel>
4
</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference
Include=
"HslCommunication, Version=5.0.
4
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
4
\lib\net35\HslCommunication.dll
</HintPath>
<Reference
Include=
"HslCommunication, Version=5.0.
6
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
6
\lib\net35\HslCommunication.dll
</HintPath>
</Reference>
<Reference
Include=
"Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Newtonsoft.Json.11.0.2\lib\net35\Newtonsoft.Json.dll
</HintPath>
...
...
CommonLibrary/packages.config
浏览文件 @
69cd7ed3
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
packages
>
<
package
id
=
"HslCommunication"
version
=
"5.0.
4
"
targetFramework
=
"net35"
/>
<
package
id
=
"HslCommunication"
version
=
"5.0.
6
"
targetFramework
=
"net35"
/>
<
package
id
=
"Newtonsoft.Json"
version
=
"11.0.2"
targetFramework
=
"net35"
/>
</
packages
>
\ No newline at end of file
HslCommunicationNetTestTool/HslCommunicationNetTestTool.csproj
浏览文件 @
69cd7ed3
...
...
@@ -31,8 +31,8 @@
<WarningLevel>
4
</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference
Include=
"HslCommunication, Version=5.0.
4
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
4
\lib\net35\HslCommunication.dll
</HintPath>
<Reference
Include=
"HslCommunication, Version=5.0.
6
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
6
\lib\net35\HslCommunication.dll
</HintPath>
</Reference>
<Reference
Include=
"Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Newtonsoft.Json.11.0.2\lib\net35\Newtonsoft.Json.dll
</HintPath>
...
...
HslCommunicationNetTestTool/packages.config
浏览文件 @
69cd7ed3
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
packages
>
<
package
id
=
"HslCommunication"
version
=
"5.0.
4
"
targetFramework
=
"net35"
/>
<
package
id
=
"HslCommunication"
version
=
"5.0.
6
"
targetFramework
=
"net35"
/>
<
package
id
=
"Newtonsoft.Json"
version
=
"11.0.2"
targetFramework
=
"net35"
/>
</
packages
>
\ No newline at end of file
README.md
浏览文件 @
69cd7ed3
...
...
@@ -4,10 +4,29 @@
[
![Android Studio
](
https://img.shields.io/badge/Android%20Studio-2.3-green.svg
)
](https://www.visualstudio.com/zh-hans/)
## Summary
一个基于中小型提炼的C-S开发框架,覆盖电脑端,web端,手机端的全平台系统模版,在大多数的一对多的系统设计中会包含一些常用的重复的功能代码,比如网络通信机制,客户端版本控制,账户控制管理,密码修改,公告管理,服务器配置,各种常用窗口等等,而且大多数的中小型系统只是需要到简单的权限管理即可。
一个基于中小型提炼的C-S开发框架,覆盖电脑端,web端,手机端的全平台系统模版,在大多数的一对多的系统设计中会包含一些常用的重复的功能代码,
比如网络通信机制,客户端版本控制,账户控制管理,密码修改,公告管理,服务器配置,各种常用窗口等等,而且大多数的中小型系统只是需要到简单的权限管理即可。
<br
/>
本框架包含了四种客户端的模式,第一种常用的winform客户端,第二种为wpf客户端,第三种为asp.net mvc模式,第四种为安卓平台的客户端,也就是说你可以在winform和wpf客户端上选择一种模式,然后您的系统提供一些功能(诸如报表查看)到asp.net上去,然后提供一个手机端使用的Android App,如果服务器假设在云端,所有的人都可以随时随地的进行交互,数据流通,所有的账户模型都是统一的,浏览器还方便一些只需要查看报表用户的人员不需要在部署客户端了。当然,客户端可以提供更加强大的功能。
本框架包含了四种客户端的模式,第一种常用的winform客户端,第二种为wpf客户端,第三种为asp.net mvc模式,
第四种为安卓平台的客户端,也就是说你可以在winform和wpf客户端上选择一种模式,然后您的系统提供一些功能(诸如报表查看)到asp.net上去,
然后提供一个手机端使用的Android App,如果服务器假设在云端,所有的人都可以随时随地的进行交互,数据流通,所有的账户模型都是统一的,
浏览器还方便一些只需要查看报表用户的人员不需要在部署客户端了。当然,客户端可以提供更加强大的功能。
A CS development framework based on small-to-medium sized refining, covering computer-side, web-side, and mobile-side full-platform system templates,
will include some commonly used repetitive function codes, such as network communication mechanisms,
in most one-to-many system designs. Client version control, account control management, password modification,
announcement management, server configuration, various common windows, etc., and most small and medium-sized systems
just need simple rights management.
This framework contains four client-side modes, the first commonly used winform client, the second is the wpf client,
the third is the asp.net mvc mode, and the fourth is the client of the Android platform. You can choose a mode on winform and wpf clients,
then your system provides some functions (such as report viewing) to asp.net, and then provide an Android app for mobile phone use,
if the server is assumed in the cloud, all People can interact with anytime, anywhere, data flow, all account models are unified,
the browser is also convenient for some people who only need to view the report users do not need to deploy the client. Of course,
the client can provide more powerful features.
## Features included
...
...
软件系统客户端Wpf/packages.config
浏览文件 @
69cd7ed3
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
packages
>
<
package
id
=
"HslCommunication"
version
=
"5.0.
4
"
targetFramework
=
"net45"
/>
<
package
id
=
"HslCommunication"
version
=
"5.0.
6
"
targetFramework
=
"net45"
/>
<
package
id
=
"MaterialDesignColors"
version
=
"1.1.3"
targetFramework
=
"net45"
/>
<
package
id
=
"MaterialDesignThemes"
version
=
"2.
3.1.953
"
targetFramework
=
"net45"
/>
<
package
id
=
"MaterialDesignThemes"
version
=
"2.
4.0.1044
"
targetFramework
=
"net45"
/>
<
package
id
=
"Newtonsoft.Json"
version
=
"11.0.2"
targetFramework
=
"net45"
/>
</
packages
>
\ No newline at end of file
软件系统客户端Wpf/软件系统客户端Wpf.csproj
浏览文件 @
69cd7ed3
...
...
@@ -40,14 +40,14 @@
<Reference
Include=
"CommonLibrary"
>
<HintPath>
..\CommonLibrary\bin\Debug\CommonLibrary.dll
</HintPath>
</Reference>
<Reference
Include=
"HslCommunication, Version=5.0.
4
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
4
\lib\net35\HslCommunication.dll
</HintPath>
<Reference
Include=
"HslCommunication, Version=5.0.
6
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
6
\lib\net35\HslCommunication.dll
</HintPath>
</Reference>
<Reference
Include=
"MaterialDesignColors, Version=1.1.3.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\MaterialDesignColors.1.1.3\lib\net45\MaterialDesignColors.dll
</HintPath>
</Reference>
<Reference
Include=
"MaterialDesignThemes.Wpf, Version=2.
3.1.953
, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\MaterialDesignThemes.2.
3.1.953
\lib\net45\MaterialDesignThemes.Wpf.dll
</HintPath>
<Reference
Include=
"MaterialDesignThemes.Wpf, Version=2.
4.0.1044
, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\MaterialDesignThemes.2.
4.0.1044
\lib\net45\MaterialDesignThemes.Wpf.dll
</HintPath>
</Reference>
<Reference
Include=
"Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
</HintPath>
...
...
软件系统客户端模版/packages.config
浏览文件 @
69cd7ed3
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
packages
>
<
package
id
=
"HslCommunication"
version
=
"5.0.
4
"
targetFramework
=
"net35"
/>
<
package
id
=
"HslCommunication"
version
=
"5.0.
6
"
targetFramework
=
"net35"
/>
<
package
id
=
"Newtonsoft.Json"
version
=
"11.0.2"
targetFramework
=
"net35"
/>
</
packages
>
\ No newline at end of file
软件系统客户端模版/软件系统客户端模版.csproj
浏览文件 @
69cd7ed3
...
...
@@ -39,8 +39,8 @@
<Reference
Include=
"CommonLibrary"
>
<HintPath>
..\CommonLibrary\bin\Debug\CommonLibrary.dll
</HintPath>
</Reference>
<Reference
Include=
"HslCommunication, Version=5.0.
4
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
4
\lib\net35\HslCommunication.dll
</HintPath>
<Reference
Include=
"HslCommunication, Version=5.0.
6
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
6
\lib\net35\HslCommunication.dll
</HintPath>
</Reference>
<Reference
Include=
"Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Newtonsoft.Json.11.0.2\lib\net35\Newtonsoft.Json.dll
</HintPath>
...
...
软件系统服务端模版/FormServerWindow.Designer.cs
浏览文件 @
69cd7ed3
...
...
@@ -46,6 +46,7 @@
this
.
消息发送
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
一键断开
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
账户管理
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
日志查看
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
关于
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
关于软件
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
版本号说明
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
...
...
@@ -62,7 +63,6 @@
this
.
label7
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
label_GC_Memery
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
label_Pm_Memery
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
日志查看
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
statusStrip1
.
SuspendLayout
();
this
.
menuStrip1
.
SuspendLayout
();
this
.
SuspendLayout
();
...
...
@@ -135,38 +135,45 @@
// 版本控制ToolStripMenuItem
//
this
.
版本控制
ToolStripMenuItem
.
Name
=
"版本控制ToolStripMenuItem"
;
this
.
版本控制
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
52
,
26
);
this
.
版本控制
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
44
,
26
);
this
.
版本控制
ToolStripMenuItem
.
Text
=
"版本控制"
;
this
.
版本控制
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
版本控制
ToolStripMenuItem_Click
);
//
// 维护切换ToolStripMenuItem
//
this
.
维护切换
ToolStripMenuItem
.
Name
=
"维护切换ToolStripMenuItem"
;
this
.
维护切换
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
52
,
26
);
this
.
维护切换
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
44
,
26
);
this
.
维护切换
ToolStripMenuItem
.
Text
=
"维护切换"
;
this
.
维护切换
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
维护切换
ToolStripMenuItem_Click
);
//
// 消息发送ToolStripMenuItem
//
this
.
消息发送
ToolStripMenuItem
.
Name
=
"消息发送ToolStripMenuItem"
;
this
.
消息发送
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
52
,
26
);
this
.
消息发送
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
44
,
26
);
this
.
消息发送
ToolStripMenuItem
.
Text
=
"消息发送"
;
this
.
消息发送
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
消息发送
ToolStripMenuItem_Click
);
//
// 一键断开ToolStripMenuItem
//
this
.
一键断开
ToolStripMenuItem
.
Name
=
"一键断开ToolStripMenuItem"
;
this
.
一键断开
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
52
,
26
);
this
.
一键断开
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
44
,
26
);
this
.
一键断开
ToolStripMenuItem
.
Text
=
"一键断开"
;
this
.
一键断开
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
一键断开
ToolStripMenuItem_Click
);
//
// 账户管理ToolStripMenuItem
//
this
.
账户管理
ToolStripMenuItem
.
Name
=
"账户管理ToolStripMenuItem"
;
this
.
账户管理
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
52
,
26
);
this
.
账户管理
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
44
,
26
);
this
.
账户管理
ToolStripMenuItem
.
Text
=
"账户管理"
;
this
.
账户管理
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
账户管理
ToolStripMenuItem_Click
);
//
// 日志查看ToolStripMenuItem
//
this
.
日志查看
ToolStripMenuItem
.
Name
=
"日志查看ToolStripMenuItem"
;
this
.
日志查看
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
144
,
26
);
this
.
日志查看
ToolStripMenuItem
.
Text
=
"日志查看"
;
this
.
日志查看
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
日志查看
ToolStripMenuItem_Click
);
//
// 关于ToolStripMenuItem
//
this
.
关于
ToolStripMenuItem
.
DropDownItems
.
AddRange
(
new
System
.
Windows
.
Forms
.
ToolStripItem
[]
{
...
...
@@ -327,13 +334,6 @@
this
.
label_Pm_Memery
.
Text
=
"0"
;
this
.
label_Pm_Memery
.
TextAlign
=
System
.
Drawing
.
ContentAlignment
.
TopRight
;
//
// 日志查看ToolStripMenuItem
//
this
.
日志查看
ToolStripMenuItem
.
Name
=
"日志查看ToolStripMenuItem"
;
this
.
日志查看
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
152
,
26
);
this
.
日志查看
ToolStripMenuItem
.
Text
=
"日志查看"
;
this
.
日志查看
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
日志查看
ToolStripMenuItem_Click
);
//
// FormServerWindow
//
this
.
AutoScaleDimensions
=
new
System
.
Drawing
.
SizeF
(
7F
,
17F
);
...
...
软件系统服务端模版/FormServerWindow.cs
浏览文件 @
69cd7ed3
...
...
@@ -21,7 +21,7 @@ using HslCommunication.Core.Net;
/********************************************************************************************
*
* 模版日期 201
7-10-06
* 模版日期 201
8年5月4日 22:27:58
* 创建人 Richard.Hu
* 版权所有 Richard.Hu
* 授权说明 模版仅授权个人研究学习使用,如需商用,请联系hsl200909@163.com洽谈
...
...
@@ -45,6 +45,7 @@ using HslCommunication.Core.Net;
*
* 本项目模版不包含 《软件自动更新.exe》
* 该exe程序来自另一个开源项目HslCommunication
* 地址为:https://github.com/dathlin/HslCommunication
*
********************************************************************************************/
...
...
@@ -97,38 +98,39 @@ namespace 软件系统服务端模版
private
string
LogSavePath
{
get
;
set
;
}
private
void
Form1_Load
(
object
sender
,
EventArgs
e
)
private
void
Form1_Load
(
object
sender
,
EventArgs
e
)
{
// 初始化默认的委托对象
ActionInitialization
();
ActionInitialization
(
);
// 邮件系统初始化
SoftMailInitialization
();
SoftMailInitialization
(
);
// 初始化日志工具
RuntimeLogHelper
=
new
LogNetSingle
(
LogSavePath
+
@"\log.txt"
);
RuntimeLogHelper
=
new
LogNetSingle
(
LogSavePath
+
@"\log.txt"
);
// 初始化反馈信息工具
AdviceLogHelper
=
new
LogNetSingle
(
LogSavePath
+
@"\advice_log.txt"
);
AdviceLogHelper
=
new
LogNetSingle
(
LogSavePath
+
@"\advice_log.txt"
);
// 初始化客户端异常日志工具
ClientsLogHelper
=
new
LogNetSingle
(
LogSavePath
+
@"\clients_log.txt"
);
ClientsLogHelper
=
new
LogNetSingle
(
LogSavePath
+
@"\clients_log.txt"
);
// 初始化并加载账户信息
UserServer
.
ServerSettings
.
FileSavePath
=
Application
.
StartupPath
+
@"\settings.txt"
;
UserServer
.
ServerSettings
.
LoadByFile
();
UserServer
.
ServerSettings
.
LoadByFile
(
);
CommonLibrary
.
DataBaseSupport
.
SqlServerSupport
.
ConnectionString
=
UserServer
.
ServerSettings
.
SqlServerStr
;
// 初始化并加载角色规则
UserServer
.
ServerRoles
.
FileSavePath
=
Application
.
StartupPath
+
@"\roles.txt"
;
UserServer
.
ServerRoles
.
LoadByFile
();
UserServer
.
ServerRoles
.
LoadByFile
(
);
// 初始化版权信息
toolStripStatusLabel_version
.
Text
=
UserServer
.
ServerSettings
.
SystemVersion
.
ToString
();
toolStripStatusLabel_version
.
Text
=
UserServer
.
ServerSettings
.
SystemVersion
.
ToString
(
);
toolStripStatusLabel1
.
Text
=
$"本软件著作权归
{
SoftResources
.
StringResouce
.
SoftCopyRight
}
所有"
;
label5
.
Text
=
SoftResources
.
StringResouce
.
SoftName
;
// 加载账户信息
UserServer
.
ServerAccounts
.
FileSavePath
=
Application
.
StartupPath
+
@"\accounts.txt"
;
UserServer
.
ServerAccounts
.
LoadByFile
();
UserServer
.
ServerAccounts
.
LoadByFile
(
);
UserServer
.
ServerAccounts
.
ILogNet
=
RuntimeLogHelper
;
// 初始化聊天信息
ChatInitialization
();
ChatInitialization
(
);
}
private
void
Form1_FormClosing
(
object
sender
,
FormClosingEventArgs
e
)
{
// 密码验证的示例,此处关闭窗口验证
...
...
@@ -207,7 +209,7 @@ namespace 软件系统服务端模版
if
(
e
.
ExceptionObject
is
Exception
ex
)
{
RuntimeLogHelper
.
WriteException
(
"UnhandledException:"
,
ex
);
//发送到自己的EMAIL
//
发送到自己的EMAIL
SendUserMail
(
ex
);
}
}
...
...
@@ -215,8 +217,10 @@ namespace 软件系统服务端模版
#
endregion
#
region
Menu
Click
Event
private
void
启动服务器
ToolStripMenuItem_Click
(
object
sender
,
EventArgs
e
)
{
// Start Server
if
(!
IsSystemStart
)
{
Net_Simplify_Server_Initialization
();
//同步网络初始化
...
...
@@ -345,20 +349,25 @@ namespace 软件系统服务端模版
#
endregion
#
region
软件更新服务引擎
#
region
Software
Auto
Update
Function
/// <summary>
/// 支持软件自动更新的后台服务引擎
/// </summary>
private
NetSoftUpdateServer
net_soft_update_Server
=
new
NetSoftUpdateServer
();
private
void
Net_SoftUpdate_Server_Initialization
()
{
try
{
net_soft_update_Server
.
LogNet
=
new
LogNetSingle
(
LogSavePath
+
@"\update_log.txt"
);
//在服务器的这个路径下,放置客户端运行的所有文件,不要包含settings文件,不要从此处运行
//只放置exe和dll组件,必须放置:软件自动更新.exe
net_soft_update_Server
.
Token
=
UserSystem
.
KeyToken
;
// 在服务器的这个路径下,放置客户端运行的所有文件,不要包含settings文件,不要从此处运行
// 只放置exe和dll组件,必须放置:软件自动更新.exe
// In this path of the server, place all files run by the client, do not include the settings file, do not run from here
// Only exe and dll components are placed and must be placed: 软件自动更新.exe
net_soft_update_Server
.
FileUpdatePath
=
Application
.
StartupPath
+
@"\AdvancedFiles\ClientFiles"
;
//客户端文件路径
net_soft_update_Server
.
ServerStart
(
UserSystem
.
Port_Update_Net
);
}
...
...
@@ -376,6 +385,7 @@ namespace 软件系统服务端模版
/// 用户同步数据传送的引擎
/// </summary>
private
NetSimplifyServer
net_simplify_server
=
new
NetSimplifyServer
();
/// <summary>
/// 同步传送数据的初始化
/// </summary>
...
...
@@ -395,6 +405,7 @@ namespace 软件系统服务端模版
SoftBasic
.
ShowExceptionMessage
(
ex
);
}
}
/// <summary>
/// 接收来自客户端的字节数据
/// </summary>
...
...
@@ -917,6 +928,7 @@ namespace 软件系统服务端模版
/// 异步客户端管理引擎,维护所有的客户端在线情况,支持主动发数据到所有的客户端
/// </summary>
private
NetComplexServer
net_socket_server
=
new
NetComplexServer
();
/// <summary>
/// 异步传送数据的初始化
/// </summary>
...
...
@@ -983,7 +995,7 @@ namespace 软件系统服务端模版
private
void
Net_socket_server_AcceptByte
(
AppSession
session
,
NetHandle
customer
,
byte
[]
data
)
{
//如果此处充斥大量if语句,影响观感,则考虑进行指令头分类操作,客户端异步发送的字节数组都会到此处处理
//
如果此处充斥大量if语句,影响观感,则考虑进行指令头分类操作,客户端异步发送的字节数组都会到此处处理
}
...
...
@@ -1074,7 +1086,7 @@ namespace 软件系统服务端模版
#
endregion
#
region
后台计数线程
#
region
Time
Tick
Thread
/*********************************************************************************************
*
...
...
@@ -1098,25 +1110,28 @@ namespace 软件系统服务端模版
thread
.
IsBackground
=
true
;
thread
.
Start
();
}
/// <summary>
/// 缓存的上次内存占用
/// </summary>
private
long
GC_Memery
{
get
;
set
;
}
/// <summary>
/// 程序的内存对象
/// </summary>
private
long
Pm_Memery
{
get
;
set
;
}
private
void
MethodOccurEverySecond
()
{
long
current1
=
GC
.
GetTotalMemory
(
false
);
//增加到性能计数
//
增加到性能计数
AddPerfomace
(
current1
);
long
current2
=
0
;
toolStripStatusLabel_time
.
Text
=
DateTime
.
Now
.
ToString
();
label_GC_Memery
.
Text
=
current1
.
ToString
();
label_Pm_Memery
.
Text
=
"备用"
;
//current2.ToString();
label_Pm_Memery
.
Text
=
"备用"
;
//current2.ToString();
label_GC_Memery
.
BackColor
=
current1
<
GC_Memery
?
Color
.
Tomato
:
SystemColors
.
Control
;
label_Pm_Memery
.
BackColor
=
current2
<
Pm_Memery
?
Color
.
Tomato
:
SystemColors
.
Control
;
GC_Memery
=
current1
;
...
...
@@ -1182,8 +1197,7 @@ namespace 软件系统服务端模版
}
#
endregion
#
endregion
#
region
Advanced
File
Server
...
...
@@ -1245,6 +1259,7 @@ namespace 软件系统服务端模版
/// 终极文件管理服务器
/// </summary>
private
UltimateFileServer
net_ultimate_file_server
{
get
;
set
;
}
=
null
;
/// <summary>
/// 终极文件管理服务器
/// </summary>
...
...
@@ -1252,12 +1267,12 @@ namespace 软件系统服务端模版
{
try
{
net_ultimate_file_server
=
new
UltimateFileServer
();
net_ultimate_file_server
.
Token
=
UserSystem
.
KeyToken
;
net_ultimate_file_server
.
LogNet
=
new
LogNetSingle
(
LogSavePath
+
@"\ultimate_file_log.txt"
);
net_ultimate_file_server
.
LogNet
.
SetMessageDegree
(
HslMessageDegree
.
DEBUG
);
//
默认debug及以上级别日志均进行存储,根据需要自行选择
net_ultimate_file_server
.
FilesDirectoryPath
=
Application
.
StartupPath
+
@"\UltimateFiles"
;
net_ultimate_file_server
.
ServerStart
(
UserSystem
.
Port_Ultimate_File_Server
);
net_ultimate_file_server
=
new
UltimateFileServer
();
// 实例化
net_ultimate_file_server
.
Token
=
UserSystem
.
KeyToken
;
// 设置系统的令牌
net_ultimate_file_server
.
LogNet
=
new
LogNetSingle
(
LogSavePath
+
@"\ultimate_file_log.txt"
);
// 设置日志路径
net_ultimate_file_server
.
LogNet
.
SetMessageDegree
(
HslMessageDegree
.
DEBUG
);
//
默认debug及以上级别日志均进行存储,根据需要自行选择
net_ultimate_file_server
.
FilesDirectoryPath
=
Application
.
StartupPath
+
@"\UltimateFiles"
;
// 设置文件根目录
net_ultimate_file_server
.
ServerStart
(
UserSystem
.
Port_Ultimate_File_Server
);
// 启动服务
// 共享文件管理器只是终极文件管理器的一个子容器
ShareFileContainer
=
net_ultimate_file_server
.
GetGroupFromFilePath
(
Application
.
StartupPath
+
@"\UltimateFiles\ShareFiles"
);
...
...
@@ -1274,17 +1289,18 @@ namespace 软件系统服务端模版
private
void
ShareFileContainer_FileCountChanged
(
int
fileCount
)
{
//将文件数据发送给客户端
//
将文件数据发送给客户端
net_socket_server
.
SendAllClients
(
CommonHeadCode
.
MultiNetHeadCode
.
文件总数量
,
fileCount
.
ToString
());
}
// 主界面的共享文件的容器 [The main interface of the shared file container]
private
GroupFileContainer
ShareFileContainer
;
#
endregion
#
region
意见反馈块
#
region
Feedback
Function
/**********************************************************************************************************
*
...
...
@@ -1292,7 +1308,7 @@ namespace 软件系统服务端模版
* 举例: AdviceLogHelper.SaveInformation("张三:主界面的颜色稍微调整一下");
*
**********************************************************************************************************/
/// <summary>
/// 用来记录一般的事物日志
...
...
@@ -1318,6 +1334,9 @@ namespace 软件系统服务端模版
/// <summary>
/// 服务器的UDP核心引擎
/// </summary>
/// <remarks>
/// A UDP net server, receive data from client
/// </remarks>
private
NetUdpServer
net_udp_server
{
get
;
set
;
}
private
void
Net_Udp_Server_Initialization
()
...
...
@@ -1325,12 +1344,12 @@ namespace 软件系统服务端模版
try
{
net_udp_server
=
new
NetUdpServer
();
net_udp_server
.
LogNet
=
new
LogNetSingle
(
LogSavePath
+
@"\udp_log.txt"
);
//
日志路径
net_udp_server
.
LogNet
.
SetMessageDegree
(
HslMessageDegree
.
DEBUG
);
//
默认debug及以上级别日志均进行存储,根据需要自行选择
net_udp_server
.
LogNet
=
new
LogNetSingle
(
LogSavePath
+
@"\udp_log.txt"
);
//
日志路径
net_udp_server
.
LogNet
.
SetMessageDegree
(
HslMessageDegree
.
DEBUG
);
//
默认debug及以上级别日志均进行存储,根据需要自行选择
net_udp_server
.
Token
=
UserSystem
.
KeyToken
;
net_udp_server
.
ReceiveCacheLength
=
1024
;
//
单次接收数据的缓冲长度
net_udp_server
.
AcceptByte
+=
Net_udp_server_AcceptByte
;
//
接收到字节数据的时候触发事件
net_udp_server
.
AcceptString
+=
Net_udp_server_AcceptString
;
//
接收到字符串数据的时候触发事件
net_udp_server
.
ReceiveCacheLength
=
1024
;
//
单次接收数据的缓冲长度
net_udp_server
.
AcceptByte
+=
Net_udp_server_AcceptByte
;
//
接收到字节数据的时候触发事件
net_udp_server
.
AcceptString
+=
Net_udp_server_AcceptString
;
//
接收到字符串数据的时候触发事件
net_udp_server
.
ServerStart
(
UserSystem
.
Port_Udp_Server
);
}
catch
(
Exception
ex
)
...
...
@@ -1341,8 +1360,8 @@ namespace 软件系统服务端模版
private
void
Net_udp_server_AcceptString
(
AppSession
session
,
NetHandle
customer
,
string
data
)
{
//
此处为测试
Invoke
(
new
Action
(()
=>
//
此处为测试 [Just for testing, there is no meaning]
Invoke
(
new
Action
(()
=>
{
textBox1
.
AppendText
(
$"
{
DateTime
.
Now
.
ToString
(
"MM-dd HH:mm:ss "
)}
来自IP:
{
session
.
IpEndPoint
.
Address
.
ToString
()}
内容:
{
data
}{
Environment
.
NewLine
}
"
);
}));
...
...
@@ -1391,10 +1410,10 @@ namespace 软件系统服务端模版
{
Chats_Managment
=
new
SoftMsgQueue
<
string
>()
{
MaxCache
=
200
,
//
记录200条临时消息
FileSavePath
=
Application
.
StartupPath
+
@"\chats.txt"
//
设置保存的路径
MaxCache
=
200
,
//
记录200条临时消息
FileSavePath
=
Application
.
StartupPath
+
@"\chats.txt"
//
设置保存的路径
};
Chats_Managment
.
LoadByFile
();
//加载以前的数据
Chats_Managment
.
LoadByFile
();
//
加载以前的数据
}
/// <summary>
...
...
@@ -1405,9 +1424,9 @@ namespace 软件系统服务端模版
private
void
ChatAddMessage
(
string
user
,
string
message
)
{
string
content
=
"\u0002"
+
user
+
DateTime
.
Now
.
ToString
(
" yyyy-MM-dd HH:mm:ss"
)
+
Environment
.
NewLine
+
" "
+
message
;
//转发所有的客户端,包括发送者
//
转发所有的客户端,包括发送者
net_socket_server
.
SendAllClients
(
CommonHeadCode
.
MultiNetHeadCode
.
留言版消息
,
content
);
//添加缓存
//
添加缓存
Chats_Managment
.
AddNewItem
(
content
);
}
...
...
@@ -1441,6 +1460,7 @@ namespace 软件系统服务端模版
/// 用来记录一般的事物日志
/// </summary>
private
ILogNet
RuntimeLogHelper
{
get
;
set
;
}
/// <summary>
/// 用来记录客户端的异常日志
/// </summary>
...
...
@@ -1463,26 +1483,37 @@ namespace 软件系统服务端模版
/// 控制系统是否真的发送邮件到指定地址
/// </summary>
private
bool
IsSendMailEnable
{
get
;
set
;
}
/// <summary>
/// 邮件发送系统的初始方式,所有的参数将在下面进行
/// </summary>
private
void
SoftMailInitialization
()
{
IsSendMailEnable
=
false
;
// 先进行关闭
SoftMail
.
MailSystem163
.
MailSendAddress
=
"hsl200909@163.com"
;
// 作者测试的邮箱地址,实际需要换成你自己的
// 先进行关闭 如果想发送设置为True [If you want to send the setting to True]
IsSendMailEnable
=
false
;
// 作者测试的邮箱地址,实际需要换成你自己的 [You should replace it with your own email address]
SoftMail
.
MailSystem163
.
MailSendAddress
=
"hsl200909@163.com"
;
}
/// <summary>
/// 调用该方法可以直接将异常发送到你的邮箱里,如果服务器连接网络的话
/// </summary>
/// <remarks>
/// If the server is connected to the network, calling this method can send the exception directly to your mailbox
/// </remarks>
/// <param name="ex">异常</param>
private
void
SendUserMail
(
Exception
ex
)
{
if
(
IsSendMailEnable
)
SoftMail
.
MailSystem163
.
SendMail
(
ex
);
}
/// <summary>
/// 发送指定的主题和内容到指定的邮箱
/// </summary>
/// <remarks>
/// Send the specified topic and content to the specified mailbox
/// </remarks>
/// <param name="subject">主题</param>
/// <param name="body">内容</param>
private
void
SendUserMail
(
string
subject
,
string
body
)
...
...
软件系统服务端模版/packages.config
浏览文件 @
69cd7ed3
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
packages
>
<
package
id
=
"HslCommunication"
version
=
"5.0.
4
"
targetFramework
=
"net35"
/>
<
package
id
=
"HslCommunication"
version
=
"5.0.
6
"
targetFramework
=
"net35"
/>
<
package
id
=
"Newtonsoft.Json"
version
=
"11.0.2"
targetFramework
=
"net35"
/>
</
packages
>
\ No newline at end of file
软件系统服务端模版/软件系统服务端模版.csproj
浏览文件 @
69cd7ed3
...
...
@@ -35,8 +35,8 @@
<Reference
Include=
"CommonLibrary"
>
<HintPath>
..\CommonLibrary\bin\Debug\CommonLibrary.dll
</HintPath>
</Reference>
<Reference
Include=
"HslCommunication, Version=5.0.
4
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
4
\lib\net35\HslCommunication.dll
</HintPath>
<Reference
Include=
"HslCommunication, Version=5.0.
6
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
6
\lib\net35\HslCommunication.dll
</HintPath>
</Reference>
<Reference
Include=
"Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Newtonsoft.Json.11.0.2\lib\net35\Newtonsoft.Json.dll
</HintPath>
...
...
软件系统浏览器模版/ApplicationInsights.config
浏览文件 @
69cd7ed3
...
...
@@ -23,8 +23,7 @@
<
Add
Type
=
"Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector"
>
<
ExcludeComponentCorrelationHttpHeadersOnDomains
>
<!--
Requests
to
the
following
hostnames
will
not
be
modified
by
adding
correlation
headers
.
This
is
only
applicable
if
Profiler
is
installed
via
either
StatusMonitor
or
Azure
Extension
.
Requests
to
the
following
hostnames
will
not
be
modified
by
adding
correlation
headers
.
Add
entries
here
to
exclude
additional
hostnames
.
NOTE
:
this
configuration
will
be
lost
upon
NuGet
upgrade
.
-->
...
...
@@ -35,6 +34,10 @@
<
Add
>
localhost
</
Add
>
<
Add
>
127
.
0
.
0
.
1
</
Add
>
</
ExcludeComponentCorrelationHttpHeadersOnDomains
>
<
IncludeDiagnosticSourceActivities
>
<
Add
>
Microsoft
.
Azure
.
EventHubs
</
Add
>
<
Add
>
Microsoft
.
Azure
.
ServiceBus
</
Add
>
</
IncludeDiagnosticSourceActivities
>
</
Add
>
<
Add
Type
=
"Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector"
>
<!--
...
...
@@ -69,7 +72,6 @@
NOTE
:
handler
configuration
will
be
lost
upon
NuGet
upgrade
.
-->
<
Add
>
System
.
Web
.
Handlers
.
TransferRequestHandler
</
Add
>
<
Add
>
Microsoft
.
VisualStudio
.
Web
.
PageInspector
.
Runtime
.
Tracing
.
RequestDataHttpHandler
</
Add
>
<
Add
>
System
.
Web
.
StaticFileHandler
</
Add
>
<
Add
>
System
.
Web
.
Handlers
.
AssemblyResourceLoader
</
Add
>
...
...
软件系统浏览器模版/Scripts/jquery.unobtrusive-ajax.js
浏览文件 @
69cd7ed3
/* NUGET: BEGIN LICENSE TEXT
*
* Microsoft grants you the right to use these script files for the sole
* purpose of either: (i) interacting through your browser with the Microsoft
* website or online service, subject to the applicable licensing or use
* terms; or (ii) using the files as included with a Microsoft product subject
* to that product's license terms. Microsoft reserves all other rights to the
* files not expressly granted by Microsoft, whether by implication, estoppel
* or otherwise. Insofar as a script file is dual licensed under GPL,
* Microsoft neither took the code under GPL nor distributes it thereunder but
* under the terms set out in this paragraph. All notices and licenses
* below are for informational purposes only.
*
* NUGET: END LICENSE TEXT */
/*!
** Unobtrusive Ajax support library for jQuery
** Copyright (C) Microsoft Corporation. All rights reserved.
*/
// Unobtrusive Ajax support library for jQuery
// Copyright (C) Microsoft Corporation. All rights reserved.
// @version v3.2.5
//
// Microsoft grants you the right to use these script files for the sole
// purpose of either: (i) interacting through your browser with the Microsoft
// website or online service, subject to the applicable licensing or use
// terms; or (ii) using the files as included with a Microsoft product subject
// to that product's license terms. Microsoft reserves all other rights to the
// files not expressly granted by Microsoft, whether by implication, estoppel
// or otherwise. Insofar as a script file is dual licensed under GPL,
// Microsoft neither took the code under GPL nor distributes it thereunder but
// under the terms set out in this paragraph. All notices and licenses
// below are for informational purposes only.
/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */
/*global window: false, jQuery: false */
...
...
@@ -59,23 +55,18 @@
var
top
;
switch
(
mode
)
{
case
"
BEFORE
"
:
top
=
update
.
firstChild
;
$
(
"
<div />
"
).
html
(
data
).
contents
().
each
(
function
()
{
update
.
insertBefore
(
this
,
top
);
});
break
;
case
"
AFTER
"
:
$
(
"
<div />
"
).
html
(
data
).
contents
().
each
(
function
()
{
update
.
appendChild
(
this
);
});
break
;
case
"
REPLACE-WITH
"
:
$
(
update
).
replaceWith
(
data
);
break
;
default
:
$
(
update
).
html
(
data
);
break
;
case
"
BEFORE
"
:
$
(
update
).
prepend
(
data
);
break
;
case
"
AFTER
"
:
$
(
update
).
append
(
data
);
break
;
case
"
REPLACE-WITH
"
:
$
(
update
).
replaceWith
(
data
);
break
;
default
:
$
(
update
).
html
(
data
);
break
;
}
});
}
...
...
@@ -94,7 +85,7 @@
$
.
extend
(
options
,
{
type
:
element
.
getAttribute
(
"
data-ajax-method
"
)
||
undefined
,
url
:
element
.
getAttribute
(
"
data-ajax-url
"
)
||
undefined
,
cache
:
!!
element
.
getAttribute
(
"
data-ajax-cache
"
)
,
cache
:
(
element
.
getAttribute
(
"
data-ajax-cache
"
)
||
""
).
toLowerCase
()
===
"
true
"
,
beforeSend
:
function
(
xhr
)
{
var
result
;
asyncOnBeforeSend
(
xhr
,
method
);
...
...
@@ -175,7 +166,7 @@
$
(
document
).
on
(
"
submit
"
,
"
form[data-ajax=true]
"
,
function
(
evt
)
{
var
clickInfo
=
$
(
this
).
data
(
data_click
)
||
[],
clickTarget
=
$
(
this
).
data
(
data_target
),
isCancel
=
clickTarget
&&
clickTarget
.
hasClass
(
"
cancel
"
);
isCancel
=
clickTarget
&&
(
clickTarget
.
hasClass
(
"
cancel
"
)
||
clickTarget
.
attr
(
'
formnovalidate
'
)
!==
undefined
);
evt
.
preventDefault
();
if
(
!
isCancel
&&
!
validate
(
this
))
{
return
;
...
...
@@ -186,4 +177,4 @@
data
:
clickInfo
.
concat
(
$
(
this
).
serializeArray
())
});
});
}(
jQuery
));
\ No newline at end of file
}(
jQuery
));
软件系统浏览器模版/Scripts/jquery.unobtrusive-ajax.min.js
浏览文件 @
69cd7ed3
/* NUGET: BEGIN LICENSE TEXT
*
* Microsoft grants you the right to use these script files for the sole
* purpose of either: (i) interacting through your browser with the Microsoft
* website or online service, subject to the applicable licensing or use
* terms; or (ii) using the files as included with a Microsoft product subject
* to that product's license terms. Microsoft reserves all other rights to the
* files not expressly granted by Microsoft, whether by implication, estoppel
* or otherwise. Insofar as a script file is dual licensed under GPL,
* Microsoft neither took the code under GPL nor distributes it thereunder but
* under the terms set out in this paragraph. All notices and licenses
* below are for informational purposes only.
*
* NUGET: END LICENSE TEXT */
/*
** Unobtrusive Ajax support library for jQuery
** Copyright (C) Microsoft Corporation. All rights reserved.
*/
(
function
(
a
){
var
b
=
"
unobtrusiveAjaxClick
"
,
d
=
"
unobtrusiveAjaxClickTarget
"
,
h
=
"
unobtrusiveValidation
"
;
function
c
(
d
,
b
){
var
a
=
window
,
c
=
(
d
||
""
).
split
(
"
.
"
);
while
(
a
&&
c
.
length
)
a
=
a
[
c
.
shift
()];
if
(
typeof
a
===
"
function
"
)
return
a
;
b
.
push
(
d
);
return
Function
.
constructor
.
apply
(
null
,
b
)}
function
e
(
a
){
return
a
===
"
GET
"
||
a
===
"
POST
"
}
function
g
(
b
,
a
){
!
e
(
a
)
&&
b
.
setRequestHeader
(
"
X-HTTP-Method-Override
"
,
a
)}
function
i
(
c
,
b
,
e
){
var
d
;
if
(
e
.
indexOf
(
"
application/x-javascript
"
)
!==-
1
)
return
;
d
=
(
c
.
getAttribute
(
"
data-ajax-mode
"
)
||
""
).
toUpperCase
();
a
(
c
.
getAttribute
(
"
data-ajax-update
"
)).
each
(
function
(
f
,
c
){
var
e
;
switch
(
d
){
case
"
BEFORE
"
:
e
=
c
.
firstChild
;
a
(
"
<div />
"
).
html
(
b
).
contents
().
each
(
function
(){
c
.
insertBefore
(
this
,
e
)});
break
;
case
"
AFTER
"
:
a
(
"
<div />
"
).
html
(
b
).
contents
().
each
(
function
(){
c
.
appendChild
(
this
)});
break
;
case
"
REPLACE-WITH
"
:
a
(
c
).
replaceWith
(
b
);
break
;
default
:
a
(
c
).
html
(
b
)}})}
function
f
(
b
,
d
){
var
j
,
k
,
f
,
h
;
j
=
b
.
getAttribute
(
"
data-ajax-confirm
"
);
if
(
j
&&!
window
.
confirm
(
j
))
return
;
k
=
a
(
b
.
getAttribute
(
"
data-ajax-loading
"
));
h
=
parseInt
(
b
.
getAttribute
(
"
data-ajax-loading-duration
"
),
10
)
||
0
;
a
.
extend
(
d
,{
type
:
b
.
getAttribute
(
"
data-ajax-method
"
)
||
undefined
,
url
:
b
.
getAttribute
(
"
data-ajax-url
"
)
||
undefined
,
cache
:
!!
b
.
getAttribute
(
"
data-ajax-cache
"
),
beforeSend
:
function
(
d
){
var
a
;
g
(
d
,
f
);
a
=
c
(
b
.
getAttribute
(
"
data-ajax-begin
"
),[
"
xhr
"
]).
apply
(
b
,
arguments
);
a
!==
false
&&
k
.
show
(
h
);
return
a
},
complete
:
function
(){
k
.
hide
(
h
);
c
(
b
.
getAttribute
(
"
data-ajax-complete
"
),[
"
xhr
"
,
"
status
"
]).
apply
(
b
,
arguments
)},
success
:
function
(
a
,
e
,
d
){
i
(
b
,
a
,
d
.
getResponseHeader
(
"
Content-Type
"
)
||
"
text/html
"
);
c
(
b
.
getAttribute
(
"
data-ajax-success
"
),[
"
data
"
,
"
status
"
,
"
xhr
"
]).
apply
(
b
,
arguments
)},
error
:
function
(){
c
(
b
.
getAttribute
(
"
data-ajax-failure
"
),[
"
xhr
"
,
"
status
"
,
"
error
"
]).
apply
(
b
,
arguments
)}});
d
.
data
.
push
({
name
:
"
X-Requested-With
"
,
value
:
"
XMLHttpRequest
"
});
f
=
d
.
type
.
toUpperCase
();
if
(
!
e
(
f
)){
d
.
type
=
"
POST
"
;
d
.
data
.
push
({
name
:
"
X-HTTP-Method-Override
"
,
value
:
f
})}
a
.
ajax
(
d
)}
function
j
(
c
){
var
b
=
a
(
c
).
data
(
h
);
return
!
b
||!
b
.
validate
||
b
.
validate
()}
a
(
document
).
on
(
"
click
"
,
"
a[data-ajax=true]
"
,
function
(
a
){
a
.
preventDefault
();
f
(
this
,{
url
:
this
.
href
,
type
:
"
GET
"
,
data
:[]})});
a
(
document
).
on
(
"
click
"
,
"
form[data-ajax=true] input[type=image]
"
,
function
(
c
){
var
g
=
c
.
target
.
name
,
e
=
a
(
c
.
target
),
f
=
a
(
e
.
parents
(
"
form
"
)[
0
]),
d
=
e
.
offset
();
f
.
data
(
b
,[{
name
:
g
+
"
.x
"
,
value
:
Math
.
round
(
c
.
pageX
-
d
.
left
)},{
name
:
g
+
"
.y
"
,
value
:
Math
.
round
(
c
.
pageY
-
d
.
top
)}]);
setTimeout
(
function
(){
f
.
removeData
(
b
)},
0
)});
a
(
document
).
on
(
"
click
"
,
"
form[data-ajax=true] :submit
"
,
function
(
e
){
var
g
=
e
.
currentTarget
.
name
,
f
=
a
(
e
.
target
),
c
=
a
(
f
.
parents
(
"
form
"
)[
0
]);
c
.
data
(
b
,
g
?[{
name
:
g
,
value
:
e
.
currentTarget
.
value
}]:[]);
c
.
data
(
d
,
f
);
setTimeout
(
function
(){
c
.
removeData
(
b
);
c
.
removeData
(
d
)},
0
)});
a
(
document
).
on
(
"
submit
"
,
"
form[data-ajax=true]
"
,
function
(
h
){
var
e
=
a
(
this
).
data
(
b
)
||
[],
c
=
a
(
this
).
data
(
d
),
g
=
c
&&
c
.
hasClass
(
"
cancel
"
);
h
.
preventDefault
();
if
(
!
g
&&!
j
(
this
))
return
;
f
(
this
,{
url
:
this
.
action
,
type
:
this
.
method
||
"
GET
"
,
data
:
e
.
concat
(
a
(
this
).
serializeArray
())})})})(
jQuery
);
\ No newline at end of file
// Unobtrusive Ajax support library for jQuery
// Copyright (C) Microsoft Corporation. All rights reserved.
// @version v3.2.5
//
// Microsoft grants you the right to use these script files for the sole
// purpose of either: (i) interacting through your browser with the Microsoft
// website or online service, subject to the applicable licensing or use
// terms; or (ii) using the files as included with a Microsoft product subject
// to that product's license terms. Microsoft reserves all other rights to the
// files not expressly granted by Microsoft, whether by implication, estoppel
// or otherwise. Insofar as a script file is dual licensed under GPL,
// Microsoft neither took the code under GPL nor distributes it thereunder but
// under the terms set out in this paragraph. All notices and licenses
// below are for informational purposes only.
!
function
(
t
){
function
a
(
t
,
a
){
for
(
var
e
=
window
,
r
=
(
t
||
""
).
split
(
"
.
"
);
e
&&
r
.
length
;)
e
=
e
[
r
.
shift
()];
return
"
function
"
==
typeof
e
?
e
:(
a
.
push
(
t
),
Function
.
constructor
.
apply
(
null
,
a
))}
function
e
(
t
){
return
"
GET
"
===
t
||
"
POST
"
===
t
}
function
r
(
t
,
a
){
e
(
a
)
||
t
.
setRequestHeader
(
"
X-HTTP-Method-Override
"
,
a
)}
function
n
(
a
,
e
,
r
){
var
n
;
r
.
indexOf
(
"
application/x-javascript
"
)
===-
1
&&
(
n
=
(
a
.
getAttribute
(
"
data-ajax-mode
"
)
||
""
).
toUpperCase
(),
t
(
a
.
getAttribute
(
"
data-ajax-update
"
)).
each
(
function
(
a
,
r
){
switch
(
n
){
case
"
BEFORE
"
:
t
(
r
).
prepend
(
e
);
break
;
case
"
AFTER
"
:
t
(
r
).
append
(
e
);
break
;
case
"
REPLACE-WITH
"
:
t
(
r
).
replaceWith
(
e
);
break
;
default
:
t
(
r
).
html
(
e
)}}))}
function
u
(
u
,
i
){
var
o
,
d
,
c
,
s
;
o
=
u
.
getAttribute
(
"
data-ajax-confirm
"
),
o
&&!
window
.
confirm
(
o
)
||
(
d
=
t
(
u
.
getAttribute
(
"
data-ajax-loading
"
)),
s
=
parseInt
(
u
.
getAttribute
(
"
data-ajax-loading-duration
"
),
10
)
||
0
,
t
.
extend
(
i
,{
type
:
u
.
getAttribute
(
"
data-ajax-method
"
)
||
void
0
,
url
:
u
.
getAttribute
(
"
data-ajax-url
"
)
||
void
0
,
cache
:
"
true
"
===
(
u
.
getAttribute
(
"
data-ajax-cache
"
)
||
""
).
toLowerCase
(),
beforeSend
:
function
(
t
){
var
e
;
return
r
(
t
,
c
),
e
=
a
(
u
.
getAttribute
(
"
data-ajax-begin
"
),[
"
xhr
"
]).
apply
(
u
,
arguments
),
e
!==!
1
&&
d
.
show
(
s
),
e
},
complete
:
function
(){
d
.
hide
(
s
),
a
(
u
.
getAttribute
(
"
data-ajax-complete
"
),[
"
xhr
"
,
"
status
"
]).
apply
(
u
,
arguments
)},
success
:
function
(
t
,
e
,
r
){
n
(
u
,
t
,
r
.
getResponseHeader
(
"
Content-Type
"
)
||
"
text/html
"
),
a
(
u
.
getAttribute
(
"
data-ajax-success
"
),[
"
data
"
,
"
status
"
,
"
xhr
"
]).
apply
(
u
,
arguments
)},
error
:
function
(){
a
(
u
.
getAttribute
(
"
data-ajax-failure
"
),[
"
xhr
"
,
"
status
"
,
"
error
"
]).
apply
(
u
,
arguments
)}}),
i
.
data
.
push
({
name
:
"
X-Requested-With
"
,
value
:
"
XMLHttpRequest
"
}),
c
=
i
.
type
.
toUpperCase
(),
e
(
c
)
||
(
i
.
type
=
"
POST
"
,
i
.
data
.
push
({
name
:
"
X-HTTP-Method-Override
"
,
value
:
c
})),
t
.
ajax
(
i
))}
function
i
(
a
){
var
e
=
t
(
a
).
data
(
c
);
return
!
e
||!
e
.
validate
||
e
.
validate
()}
var
o
=
"
unobtrusiveAjaxClick
"
,
d
=
"
unobtrusiveAjaxClickTarget
"
,
c
=
"
unobtrusiveValidation
"
;
t
(
document
).
on
(
"
click
"
,
"
a[data-ajax=true]
"
,
function
(
t
){
t
.
preventDefault
(),
u
(
this
,{
url
:
this
.
href
,
type
:
"
GET
"
,
data
:[]})}),
t
(
document
).
on
(
"
click
"
,
"
form[data-ajax=true] input[type=image]
"
,
function
(
a
){
var
e
=
a
.
target
.
name
,
r
=
t
(
a
.
target
),
n
=
t
(
r
.
parents
(
"
form
"
)[
0
]),
u
=
r
.
offset
();
n
.
data
(
o
,[{
name
:
e
+
"
.x
"
,
value
:
Math
.
round
(
a
.
pageX
-
u
.
left
)},{
name
:
e
+
"
.y
"
,
value
:
Math
.
round
(
a
.
pageY
-
u
.
top
)}]),
setTimeout
(
function
(){
n
.
removeData
(
o
)},
0
)}),
t
(
document
).
on
(
"
click
"
,
"
form[data-ajax=true] :submit
"
,
function
(
a
){
var
e
=
a
.
currentTarget
.
name
,
r
=
t
(
a
.
target
),
n
=
t
(
r
.
parents
(
"
form
"
)[
0
]);
n
.
data
(
o
,
e
?[{
name
:
e
,
value
:
a
.
currentTarget
.
value
}]:[]),
n
.
data
(
d
,
r
),
setTimeout
(
function
(){
n
.
removeData
(
o
),
n
.
removeData
(
d
)},
0
)}),
t
(
document
).
on
(
"
submit
"
,
"
form[data-ajax=true]
"
,
function
(
a
){
var
e
=
t
(
this
).
data
(
o
)
||
[],
r
=
t
(
this
).
data
(
d
),
n
=
r
&&
(
r
.
hasClass
(
"
cancel
"
)
||
void
0
!==
r
.
attr
(
"
formnovalidate
"
));
a
.
preventDefault
(),(
n
||
i
(
this
))
&&
u
(
this
,{
url
:
this
.
action
,
type
:
this
.
method
||
"
GET
"
,
data
:
e
.
concat
(
t
(
this
).
serializeArray
())})})}(
jQuery
);
\ No newline at end of file
软件系统浏览器模版/Scripts/jquery.validate-vsdoc.js
浏览文件 @
69cd7ed3
...
...
@@ -4,7 +4,7 @@
* intended to be used only for design-time IntelliSense. Please use the
* standard jQuery library for all production use.
*
* Comment version: 1.1
6
.0
* Comment version: 1.1
7
.0
*/
/*
...
...
@@ -15,7 +15,7 @@
* for informational purposes only and are not the license terms under
* which Microsoft distributed this file.
*
* jQuery Validation Plugin - v1.1
6
.0 - 12/5/2016
* jQuery Validation Plugin - v1.1
7
.0 - 12/5/2016
* https://github.com/jzaefferer/jquery-validation
* Copyright (c) 2013 Jörn Zaefferer; Licensed MIT
*
...
...
软件系统浏览器模版/Scripts/jquery.validate.js
浏览文件 @
69cd7ed3
/*!
* jQuery Validation Plugin v1.1
6
.0
* jQuery Validation Plugin v1.1
7
.0
*
* http://jqueryvalidation.org/
* http
s
://jqueryvalidation.org/
*
* Copyright (c) 201
6
Jörn Zaefferer
* Copyright (c) 201
7
Jörn Zaefferer
* Released under the MIT license
*/
(
function
(
factory
)
{
...
...
@@ -18,7 +18,7 @@
$
.
extend
(
$
.
fn
,
{
// http://jqueryvalidation.org/validate/
// http
s
://jqueryvalidation.org/validate/
validate
:
function
(
options
)
{
// If nothing is selected, return nothing; can't chain anyway
...
...
@@ -44,9 +44,10 @@ $.extend( $.fn, {
if
(
validator
.
settings
.
onsubmit
)
{
this
.
on
(
"
click.validate
"
,
"
:submit
"
,
function
(
event
)
{
if
(
validator
.
settings
.
submitHandler
)
{
validator
.
submitButton
=
event
.
target
;
}
// Track the used submit button to properly handle scripted
// submits later.
validator
.
submitButton
=
event
.
currentTarget
;
// Allow suppressing validation by adding a cancel class to the submit button
if
(
$
(
this
).
hasClass
(
"
cancel
"
)
)
{
...
...
@@ -68,17 +69,22 @@ $.extend( $.fn, {
}
function
handle
()
{
var
hidden
,
result
;
if
(
validator
.
settings
.
submitHandler
)
{
if
(
validator
.
submitButton
)
{
// Insert a hidden input as a replacement for the missing submit button
hidden
=
$
(
"
<input type='hidden'/>
"
)
.
attr
(
"
name
"
,
validator
.
submitButton
.
name
)
.
val
(
$
(
validator
.
submitButton
).
val
()
)
.
appendTo
(
validator
.
currentForm
);
}
// Insert a hidden input as a replacement for the missing submit button
// The hidden input is inserted in two cases:
// - A user defined a `submitHandler`
// - There was a pending request due to `remote` method and `stopRequest()`
// was called to submit the form in case it's valid
if
(
validator
.
submitButton
&&
(
validator
.
settings
.
submitHandler
||
validator
.
formSubmitted
)
)
{
hidden
=
$
(
"
<input type='hidden'/>
"
)
.
attr
(
"
name
"
,
validator
.
submitButton
.
name
)
.
val
(
$
(
validator
.
submitButton
).
val
()
)
.
appendTo
(
validator
.
currentForm
);
}
if
(
validator
.
settings
.
submitHandler
)
{
result
=
validator
.
settings
.
submitHandler
.
call
(
validator
,
validator
.
currentForm
,
event
);
if
(
validator
.
submitButto
n
)
{
if
(
hidde
n
)
{
// And clean up afterwards; thanks to no-block-scope, hidden can be referenced
hidden
.
remove
();
...
...
@@ -112,7 +118,7 @@ $.extend( $.fn, {
return
validator
;
},
// http://jqueryvalidation.org/valid/
// http
s
://jqueryvalidation.org/valid/
valid
:
function
()
{
var
valid
,
validator
,
errorList
;
...
...
@@ -133,13 +139,22 @@ $.extend( $.fn, {
return
valid
;
},
// http://jqueryvalidation.org/rules/
// http
s
://jqueryvalidation.org/rules/
rules
:
function
(
command
,
argument
)
{
var
element
=
this
[
0
],
settings
,
staticRules
,
existingRules
,
data
,
param
,
filtered
;
// If nothing is selected, return empty object; can't chain anyway
if
(
element
==
null
||
element
.
form
==
null
)
{
if
(
element
==
null
)
{
return
;
}
if
(
!
element
.
form
&&
element
.
hasAttribute
(
"
contenteditable
"
)
)
{
element
.
form
=
this
.
closest
(
"
form
"
)[
0
];
element
.
name
=
this
.
attr
(
"
name
"
);
}
if
(
element
.
form
==
null
)
{
return
;
}
...
...
@@ -167,9 +182,6 @@ $.extend( $.fn, {
$
.
each
(
argument
.
split
(
/
\s
/
),
function
(
index
,
method
)
{
filtered
[
method
]
=
existingRules
[
method
];
delete
existingRules
[
method
];
if
(
method
===
"
required
"
)
{
$
(
element
).
removeAttr
(
"
aria-required
"
);
}
}
);
return
filtered
;
}
...
...
@@ -189,7 +201,6 @@ $.extend( $.fn, {
param
=
data
.
required
;
delete
data
.
required
;
data
=
$
.
extend
(
{
required
:
param
},
data
);
$
(
element
).
attr
(
"
aria-required
"
,
"
true
"
);
}
// Make sure remote is at back
...
...
@@ -206,18 +217,18 @@ $.extend( $.fn, {
// Custom selectors
$
.
extend
(
$
.
expr
.
pseudos
||
$
.
expr
[
"
:
"
],
{
// '|| $.expr[ ":" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support
// http://jqueryvalidation.org/blank-selector/
// http
s
://jqueryvalidation.org/blank-selector/
blank
:
function
(
a
)
{
return
!
$
.
trim
(
""
+
$
(
a
).
val
()
);
},
// http://jqueryvalidation.org/filled-selector/
// http
s
://jqueryvalidation.org/filled-selector/
filled
:
function
(
a
)
{
var
val
=
$
(
a
).
val
();
return
val
!==
null
&&
!!
$
.
trim
(
""
+
val
);
},
// http://jqueryvalidation.org/unchecked-selector/
// http
s
://jqueryvalidation.org/unchecked-selector/
unchecked
:
function
(
a
)
{
return
!
$
(
a
).
prop
(
"
checked
"
);
}
...
...
@@ -230,7 +241,7 @@ $.validator = function( options, form ) {
this
.
init
();
};
// http://jqueryvalidation.org/jQuery.validator.format/
// http
s
://jqueryvalidation.org/jQuery.validator.format/
$
.
validator
.
format
=
function
(
source
,
params
)
{
if
(
arguments
.
length
===
1
)
{
return
function
()
{
...
...
@@ -343,7 +354,7 @@ $.extend( $.validator, {
}
},
// http://jqueryvalidation.org/jQuery.validator.setDefaults/
// http
s
://jqueryvalidation.org/jQuery.validator.setDefaults/
setDefaults
:
function
(
settings
)
{
$
.
extend
(
$
.
validator
.
defaults
,
settings
);
},
...
...
@@ -402,6 +413,7 @@ $.extend( $.validator, {
// Set form expando on contenteditable
if
(
!
this
.
form
&&
this
.
hasAttribute
(
"
contenteditable
"
)
)
{
this
.
form
=
$
(
this
).
closest
(
"
form
"
)[
0
];
this
.
name
=
$
(
this
).
attr
(
"
name
"
);
}
var
validator
=
$
.
data
(
this
.
form
,
"
validator
"
),
...
...
@@ -426,13 +438,9 @@ $.extend( $.validator, {
if
(
this
.
settings
.
invalidHandler
)
{
$
(
this
.
currentForm
).
on
(
"
invalid-form.validate
"
,
this
.
settings
.
invalidHandler
);
}
// Add aria-required to any Static/Data/Class required fields before first validation
// Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html
$
(
this
.
currentForm
).
find
(
"
[required], [data-rule-required], .required
"
).
attr
(
"
aria-required
"
,
"
true
"
);
},
// http://jqueryvalidation.org/Validator.form/
// http
s
://jqueryvalidation.org/Validator.form/
form
:
function
()
{
this
.
checkForm
();
$
.
extend
(
this
.
submitted
,
this
.
errorMap
);
...
...
@@ -452,7 +460,7 @@ $.extend( $.validator, {
return
this
.
valid
();
},
// http://jqueryvalidation.org/Validator.element/
// http
s
://jqueryvalidation.org/Validator.element/
element
:
function
(
element
)
{
var
cleanElement
=
this
.
clean
(
element
),
checkElement
=
this
.
validationTargetFor
(
cleanElement
),
...
...
@@ -503,7 +511,7 @@ $.extend( $.validator, {
return
result
;
},
// http://jqueryvalidation.org/Validator.showErrors/
// http
s
://jqueryvalidation.org/Validator.showErrors/
showErrors
:
function
(
errors
)
{
if
(
errors
)
{
var
validator
=
this
;
...
...
@@ -529,7 +537,7 @@ $.extend( $.validator, {
}
},
// http://jqueryvalidation.org/Validator.resetForm/
// http
s
://jqueryvalidation.org/Validator.resetForm/
resetForm
:
function
()
{
if
(
$
.
fn
.
resetForm
)
{
$
(
this
.
currentForm
).
resetForm
();
...
...
@@ -570,7 +578,10 @@ $.extend( $.validator, {
var
count
=
0
,
i
;
for
(
i
in
obj
)
{
if
(
obj
[
i
]
)
{
// This check allows counting elements with empty error
// message as invalid elements
if
(
obj
[
i
]
!==
undefined
&&
obj
[
i
]
!==
null
&&
obj
[
i
]
!==
false
)
{
count
++
;
}
}
...
...
@@ -635,6 +646,7 @@ $.extend( $.validator, {
// Set form expando on contenteditable
if
(
this
.
hasAttribute
(
"
contenteditable
"
)
)
{
this
.
form
=
$
(
this
).
closest
(
"
form
"
)[
0
];
this
.
name
=
name
;
}
// Select only the first element for each name, and only those with rules specified
...
...
@@ -735,21 +747,27 @@ $.extend( $.validator, {
}
).
length
,
dependencyMismatch
=
false
,
val
=
this
.
elementValue
(
element
),
result
,
method
,
rule
;
result
,
method
,
rule
,
normalizer
;
// If a normalizer is defined for this element, then
// call it to retreive the changed value instead
// Prioritize the local normalizer defined for this element over the global one
// if the former exists, otherwise user the global one in case it exists.
if
(
typeof
rules
.
normalizer
===
"
function
"
)
{
normalizer
=
rules
.
normalizer
;
}
else
if
(
typeof
this
.
settings
.
normalizer
===
"
function
"
)
{
normalizer
=
this
.
settings
.
normalizer
;
}
// If normalizer is defined, then call it to retreive the changed value instead
// of using the real one.
// Note that `this` in the normalizer is `element`.
if
(
typeof
rules
.
normalizer
===
"
function
"
)
{
val
=
rules
.
normalizer
.
call
(
element
,
val
);
if
(
normalizer
)
{
val
=
normalizer
.
call
(
element
,
val
);
if
(
typeof
val
!==
"
string
"
)
{
throw
new
TypeError
(
"
The normalizer should return a string value.
"
);
}
// Delete the normalizer from rules to avoid treating
// it as a pre-defined method.
// Delete the normalizer from rules to avoid treating it as a pre-defined method.
delete
rules
.
normalizer
;
}
...
...
@@ -1089,6 +1107,15 @@ $.extend( $.validator, {
$
(
element
).
removeClass
(
this
.
settings
.
pendingClass
);
if
(
valid
&&
this
.
pendingRequest
===
0
&&
this
.
formSubmitted
&&
this
.
form
()
)
{
$
(
this
.
currentForm
).
submit
();
// Remove the hidden input that was used as a replacement for the
// missing submit button. The hidden input is added by `handle()`
// to ensure that the value of the used submit button is passed on
// for scripted submits triggered by this method
if
(
this
.
submitButton
)
{
$
(
"
input:hidden[name='
"
+
this
.
submitButton
.
name
+
"
']
"
,
this
.
currentForm
).
remove
();
}
this
.
formSubmitted
=
false
;
}
else
if
(
!
valid
&&
this
.
pendingRequest
===
0
&&
this
.
formSubmitted
)
{
$
(
this
.
currentForm
).
triggerHandler
(
"
invalid-form
"
,
[
this
]
);
...
...
@@ -1316,7 +1343,7 @@ $.extend( $.validator, {
return
data
;
},
// http://jqueryvalidation.org/jQuery.validator.addMethod/
// http
s
://jqueryvalidation.org/jQuery.validator.addMethod/
addMethod
:
function
(
name
,
method
,
message
)
{
$
.
validator
.
methods
[
name
]
=
method
;
$
.
validator
.
messages
[
name
]
=
message
!==
undefined
?
message
:
$
.
validator
.
messages
[
name
];
...
...
@@ -1325,10 +1352,10 @@ $.extend( $.validator, {
}
},
// http://jqueryvalidation.org/jQuery.validator.methods/
// http
s
://jqueryvalidation.org/jQuery.validator.methods/
methods
:
{
// http://jqueryvalidation.org/required-method/
// http
s
://jqueryvalidation.org/required-method/
required
:
function
(
value
,
element
,
param
)
{
// Check if dependency is met
...
...
@@ -1347,7 +1374,7 @@ $.extend( $.validator, {
return
value
.
length
>
0
;
},
// http://jqueryvalidation.org/email-method/
// http
s
://jqueryvalidation.org/email-method/
email
:
function
(
value
,
element
)
{
// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
...
...
@@ -1357,7 +1384,7 @@ $.extend( $.validator, {
return
this
.
optional
(
element
)
||
/^
[
a-zA-Z0-9.!#$%&'*+
\/
=?^_`{|}~-
]
+@
[
a-zA-Z0-9
](?:[
a-zA-Z0-9-
]{0,61}[
a-zA-Z0-9
])?(?:\.[
a-zA-Z0-9
](?:[
a-zA-Z0-9-
]{0,61}[
a-zA-Z0-9
])?)
*$/
.
test
(
value
);
},
// http://jqueryvalidation.org/url-method/
// http
s
://jqueryvalidation.org/url-method/
url
:
function
(
value
,
element
)
{
// Copyright (c) 2010-2013 Diego Perini, MIT licensed
...
...
@@ -1367,60 +1394,60 @@ $.extend( $.validator, {
return
this
.
optional
(
element
)
||
/^
(?:(?:(?:
https
?
|ftp
)
:
)?\/\/)(?:\S
+
(?:
:
\S
*
)?
@
)?(?:(?!(?:
10|127
)(?:\.\d{1,3}){3})(?!(?:
169
\.
254|192
\.
168
)(?:\.\d{1,3}){2})(?!
172
\.(?:
1
[
6-9
]
|2
\d
|3
[
0-1
])(?:\.\d{1,3}){2})(?:[
1-9
]\d?
|1
\d\d
|2
[
01
]\d
|22
[
0-3
])(?:\.(?:
1
?\d{1,2}
|2
[
0-4
]\d
|25
[
0-5
])){2}(?:\.(?:[
1-9
]\d?
|1
\d\d
|2
[
0-4
]\d
|25
[
0-4
]))
|
(?:(?:[
a-z
\u
00a1-
\u
ffff0-9
]
-*
)
*
[
a-z
\u
00a1-
\u
ffff0-9
]
+
)(?:\.(?:[
a-z
\u
00a1-
\u
ffff0-9
]
-*
)
*
[
a-z
\u
00a1-
\u
ffff0-9
]
+
)
*
(?:\.(?:[
a-z
\u
00a1-
\u
ffff
]{2,}))
.
?)(?:
:
\d{2,5})?(?:[/
?#
]\S
*
)?
$/i
.
test
(
value
);
},
// http://jqueryvalidation.org/date-method/
// http
s
://jqueryvalidation.org/date-method/
date
:
function
(
value
,
element
)
{
return
this
.
optional
(
element
)
||
!
/Invalid|NaN/
.
test
(
new
Date
(
value
).
toString
()
);
},
// http://jqueryvalidation.org/dateISO-method/
// http
s
://jqueryvalidation.org/dateISO-method/
dateISO
:
function
(
value
,
element
)
{
return
this
.
optional
(
element
)
||
/^
\d{4}[\/\-](
0
?[
1-9
]
|1
[
012
])[\/\-](
0
?[
1-9
]
|
[
12
][
0-9
]
|3
[
01
])
$/
.
test
(
value
);
},
// http://jqueryvalidation.org/number-method/
// http
s
://jqueryvalidation.org/number-method/
number
:
function
(
value
,
element
)
{
return
this
.
optional
(
element
)
||
/^
(?:
-
?\d
+|-
?\d{1,3}(?:
,
\d{3})
+
)?(?:\.\d
+
)?
$/
.
test
(
value
);
},
// http://jqueryvalidation.org/digits-method/
// http
s
://jqueryvalidation.org/digits-method/
digits
:
function
(
value
,
element
)
{
return
this
.
optional
(
element
)
||
/^
\d
+$/
.
test
(
value
);
},
// http://jqueryvalidation.org/minlength-method/
// http
s
://jqueryvalidation.org/minlength-method/
minlength
:
function
(
value
,
element
,
param
)
{
var
length
=
$
.
isArray
(
value
)
?
value
.
length
:
this
.
getLength
(
value
,
element
);
return
this
.
optional
(
element
)
||
length
>=
param
;
},
// http://jqueryvalidation.org/maxlength-method/
// http
s
://jqueryvalidation.org/maxlength-method/
maxlength
:
function
(
value
,
element
,
param
)
{
var
length
=
$
.
isArray
(
value
)
?
value
.
length
:
this
.
getLength
(
value
,
element
);
return
this
.
optional
(
element
)
||
length
<=
param
;
},
// http://jqueryvalidation.org/rangelength-method/
// http
s
://jqueryvalidation.org/rangelength-method/
rangelength
:
function
(
value
,
element
,
param
)
{
var
length
=
$
.
isArray
(
value
)
?
value
.
length
:
this
.
getLength
(
value
,
element
);
return
this
.
optional
(
element
)
||
(
length
>=
param
[
0
]
&&
length
<=
param
[
1
]
);
},
// http://jqueryvalidation.org/min-method/
// http
s
://jqueryvalidation.org/min-method/
min
:
function
(
value
,
element
,
param
)
{
return
this
.
optional
(
element
)
||
value
>=
param
;
},
// http://jqueryvalidation.org/max-method/
// http
s
://jqueryvalidation.org/max-method/
max
:
function
(
value
,
element
,
param
)
{
return
this
.
optional
(
element
)
||
value
<=
param
;
},
// http://jqueryvalidation.org/range-method/
// http
s
://jqueryvalidation.org/range-method/
range
:
function
(
value
,
element
,
param
)
{
return
this
.
optional
(
element
)
||
(
value
>=
param
[
0
]
&&
value
<=
param
[
1
]
);
},
// http://jqueryvalidation.org/step-method/
// http
s
://jqueryvalidation.org/step-method/
step
:
function
(
value
,
element
,
param
)
{
var
type
=
$
(
element
).
attr
(
"
type
"
),
errorMessage
=
"
Step attribute on input type
"
+
type
+
"
is not supported.
"
,
...
...
@@ -1458,7 +1485,7 @@ $.extend( $.validator, {
return
this
.
optional
(
element
)
||
valid
;
},
// http://jqueryvalidation.org/equalTo-method/
// http
s
://jqueryvalidation.org/equalTo-method/
equalTo
:
function
(
value
,
element
,
param
)
{
// Bind to the blur event of the target in order to revalidate whenever the target field is updated
...
...
@@ -1471,7 +1498,7 @@ $.extend( $.validator, {
return
value
===
target
.
val
();
},
// http://jqueryvalidation.org/remote-method/
// http
s
://jqueryvalidation.org/remote-method/
remote
:
function
(
value
,
element
,
param
,
method
)
{
if
(
this
.
optional
(
element
)
)
{
return
"
dependency-mismatch
"
;
...
...
软件系统浏览器模版/Scripts/jquery.validate.min.js
浏览文件 @
69cd7ed3
此差异已折叠。
点击以展开。
软件系统浏览器模版/Scripts/jquery.validate.unobtrusive.js
浏览文件 @
69cd7ed3
/* NUGET: BEGIN LICENSE TEXT
*
* Microsoft grants you the right to use these script files for the sole
* purpose of either: (i) interacting through your browser with the Microsoft
* website or online service, subject to the applicable licensing or use
* terms; or (ii) using the files as included with a Microsoft product subject
* to that product's license terms. Microsoft reserves all other rights to the
* files not expressly granted by Microsoft, whether by implication, estoppel
* or otherwise. Insofar as a script file is dual licensed under GPL,
* Microsoft neither took the code under GPL nor distributes it thereunder but
* under the terms set out in this paragraph. All notices and licenses
* below are for informational purposes only.
*
* NUGET: END LICENSE TEXT */
/*!
** Unobtrusive validation support library for jQuery and jQuery Validate
** Copyright (C) Microsoft Corporation. All rights reserved.
*/
// Unobtrusive validation support library for jQuery and jQuery Validate
// Copyright (C) Microsoft Corporation. All rights reserved.
// @version v3.2.9
/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */
/*global document: false, jQuery: false */
(
function
(
$
)
{
(
function
(
factory
)
{
if
(
typeof
define
===
'
function
'
&&
define
.
amd
)
{
// AMD. Register as an anonymous module.
define
(
"
jquery.validate.unobtrusive
"
,
[
'
jquery.validation
'
],
factory
);
}
else
if
(
typeof
module
===
'
object
'
&&
module
.
exports
)
{
// CommonJS-like environments that support module.exports
module
.
exports
=
factory
(
require
(
'
jquery-validation
'
));
}
else
{
// Browser global
jQuery
.
validator
.
unobtrusive
=
factory
(
jQuery
);
}
}(
function
(
$
)
{
var
$jQval
=
$
.
validator
,
adapters
,
data_validation
=
"
unobtrusiveValidation
"
;
...
...
@@ -84,11 +80,12 @@
}
function
onSuccess
(
error
)
{
// 'this' is the form element
var
container
=
error
.
data
(
"
unobtrusiveContainer
"
),
replaceAttrValue
=
container
.
attr
(
"
data-valmsg-replace
"
),
replace
=
replaceAttrValue
?
$
.
parseJSON
(
replaceAttrValue
)
:
null
;
var
container
=
error
.
data
(
"
unobtrusiveContainer
"
);
if
(
container
)
{
var
replaceAttrValue
=
container
.
attr
(
"
data-valmsg-replace
"
),
replace
=
replaceAttrValue
?
$
.
parseJSON
(
replaceAttrValue
)
:
null
;
container
.
addClass
(
"
field-validation-valid
"
).
removeClass
(
"
field-validation-error
"
);
error
.
removeData
(
"
unobtrusiveContainer
"
);
...
...
@@ -131,7 +128,7 @@
execInContext
=
function
(
name
,
args
)
{
var
func
=
defaultOptions
[
name
];
func
&&
$
.
isFunction
(
func
)
&&
func
.
apply
(
form
,
args
);
}
}
;
if
(
!
result
)
{
result
=
{
...
...
@@ -422,8 +419,13 @@
setValidationValues
(
options
,
"
regex
"
,
options
.
params
.
regex
);
}
});
adapters
.
add
(
"
fileextensions
"
,
[
"
extensions
"
],
function
(
options
)
{
setValidationValues
(
options
,
"
extension
"
,
options
.
params
.
extensions
);
});
$
(
function
()
{
$jQval
.
unobtrusive
.
parse
(
document
);
});
}(
jQuery
));
\ No newline at end of file
return
$jQval
.
unobtrusive
;
}));
\ No newline at end of file
软件系统浏览器模版/Scripts/jquery.validate.unobtrusive.min.js
浏览文件 @
69cd7ed3
/* NUGET: BEGIN LICENSE TEXT
*
* Microsoft grants you the right to use these script files for the sole
* purpose of either: (i) interacting through your browser with the Microsoft
* website or online service, subject to the applicable licensing or use
* terms; or (ii) using the files as included with a Microsoft product subject
* to that product's license terms. Microsoft reserves all other rights to the
* files not expressly granted by Microsoft, whether by implication, estoppel
* or otherwise. Insofar as a script file is dual licensed under GPL,
* Microsoft neither took the code under GPL nor distributes it thereunder but
* under the terms set out in this paragraph. All notices and licenses
* below are for informational purposes only.
*
* NUGET: END LICENSE TEXT */
/*
** Unobtrusive validation support library for jQuery and jQuery Validate
** Copyright (C) Microsoft Corporation. All rights reserved.
*/
(
function
(
a
){
var
d
=
a
.
validator
,
b
,
e
=
"
unobtrusiveValidation
"
;
function
c
(
a
,
b
,
c
){
a
.
rules
[
b
]
=
c
;
if
(
a
.
message
)
a
.
messages
[
b
]
=
a
.
message
}
function
j
(
a
){
return
a
.
replace
(
/^
\s
+|
\s
+$/g
,
""
).
split
(
/
\s
*,
\s
*/g
)}
function
f
(
a
){
return
a
.
replace
(
/
([
!"#$%&'()*+,.
/
:;<=>?@
\[\\\]
^`{|}~
])
/g
,
"
\\
$1
"
)}
function
h
(
a
){
return
a
.
substr
(
0
,
a
.
lastIndexOf
(
"
.
"
)
+
1
)}
function
g
(
a
,
b
){
if
(
a
.
indexOf
(
"
*.
"
)
===
0
)
a
=
a
.
replace
(
"
*.
"
,
b
);
return
a
}
function
m
(
c
,
e
){
var
b
=
a
(
this
).
find
(
"
[data-valmsg-for='
"
+
f
(
e
[
0
].
name
)
+
"
']
"
),
d
=
b
.
attr
(
"
data-valmsg-replace
"
),
g
=
d
?
a
.
parseJSON
(
d
)
!==
false
:
null
;
b
.
removeClass
(
"
field-validation-valid
"
).
addClass
(
"
field-validation-error
"
);
c
.
data
(
"
unobtrusiveContainer
"
,
b
);
if
(
g
){
b
.
empty
();
c
.
removeClass
(
"
input-validation-error
"
).
appendTo
(
b
)}
else
c
.
hide
()}
function
l
(
e
,
d
){
var
c
=
a
(
this
).
find
(
"
[data-valmsg-summary=true]
"
),
b
=
c
.
find
(
"
ul
"
);
if
(
b
&&
b
.
length
&&
d
.
errorList
.
length
){
b
.
empty
();
c
.
addClass
(
"
validation-summary-errors
"
).
removeClass
(
"
validation-summary-valid
"
);
a
.
each
(
d
.
errorList
,
function
(){
a
(
"
<li />
"
).
html
(
this
.
message
).
appendTo
(
b
)})}}
function
k
(
d
){
var
b
=
d
.
data
(
"
unobtrusiveContainer
"
),
c
=
b
.
attr
(
"
data-valmsg-replace
"
),
e
=
c
?
a
.
parseJSON
(
c
):
null
;
if
(
b
){
b
.
addClass
(
"
field-validation-valid
"
).
removeClass
(
"
field-validation-error
"
);
d
.
removeData
(
"
unobtrusiveContainer
"
);
e
&&
b
.
empty
()}}
function
n
(){
var
b
=
a
(
this
),
c
=
"
__jquery_unobtrusive_validation_form_reset
"
;
if
(
b
.
data
(
c
))
return
;
b
.
data
(
c
,
true
);
try
{
b
.
data
(
"
validator
"
).
resetForm
()}
finally
{
b
.
removeData
(
c
)}
b
.
find
(
"
.validation-summary-errors
"
).
addClass
(
"
validation-summary-valid
"
).
removeClass
(
"
validation-summary-errors
"
);
b
.
find
(
"
.field-validation-error
"
).
addClass
(
"
field-validation-valid
"
).
removeClass
(
"
field-validation-error
"
).
removeData
(
"
unobtrusiveContainer
"
).
find
(
"
>*
"
).
removeData
(
"
unobtrusiveContainer
"
)}
function
i
(
b
){
var
c
=
a
(
b
),
f
=
c
.
data
(
e
),
i
=
a
.
proxy
(
n
,
b
),
g
=
d
.
unobtrusive
.
options
||
{},
h
=
function
(
e
,
d
){
var
c
=
g
[
e
];
c
&&
a
.
isFunction
(
c
)
&&
c
.
apply
(
b
,
d
)};
if
(
!
f
){
f
=
{
options
:{
errorClass
:
g
.
errorClass
||
"
input-validation-error
"
,
errorElement
:
g
.
errorElement
||
"
span
"
,
errorPlacement
:
function
(){
m
.
apply
(
b
,
arguments
);
h
(
"
errorPlacement
"
,
arguments
)},
invalidHandler
:
function
(){
l
.
apply
(
b
,
arguments
);
h
(
"
invalidHandler
"
,
arguments
)},
messages
:{},
rules
:{},
success
:
function
(){
k
.
apply
(
b
,
arguments
);
h
(
"
success
"
,
arguments
)}},
attachValidation
:
function
(){
c
.
off
(
"
reset.
"
+
e
,
i
).
on
(
"
reset.
"
+
e
,
i
).
validate
(
this
.
options
)},
validate
:
function
(){
c
.
validate
();
return
c
.
valid
()}};
c
.
data
(
e
,
f
)}
return
f
}
d
.
unobtrusive
=
{
adapters
:[],
parseElement
:
function
(
b
,
h
){
var
d
=
a
(
b
),
f
=
d
.
parents
(
"
form
"
)[
0
],
c
,
e
,
g
;
if
(
!
f
)
return
;
c
=
i
(
f
);
c
.
options
.
rules
[
b
.
name
]
=
e
=
{};
c
.
options
.
messages
[
b
.
name
]
=
g
=
{};
a
.
each
(
this
.
adapters
,
function
(){
var
c
=
"
data-val-
"
+
this
.
name
,
i
=
d
.
attr
(
c
),
h
=
{};
if
(
i
!==
undefined
){
c
+=
"
-
"
;
a
.
each
(
this
.
params
,
function
(){
h
[
this
]
=
d
.
attr
(
c
+
this
)});
this
.
adapt
({
element
:
b
,
form
:
f
,
message
:
i
,
params
:
h
,
rules
:
e
,
messages
:
g
})}});
a
.
extend
(
e
,{
__dummy__
:
true
});
!
h
&&
c
.
attachValidation
()},
parse
:
function
(
c
){
var
b
=
a
(
c
),
e
=
b
.
parents
().
addBack
().
filter
(
"
form
"
).
add
(
b
.
find
(
"
form
"
)).
has
(
"
[data-val=true]
"
);
b
.
find
(
"
[data-val=true]
"
).
each
(
function
(){
d
.
unobtrusive
.
parseElement
(
this
,
true
)});
e
.
each
(
function
(){
var
a
=
i
(
this
);
a
&&
a
.
attachValidation
()})}};
b
=
d
.
unobtrusive
.
adapters
;
b
.
add
=
function
(
c
,
a
,
b
){
if
(
!
b
){
b
=
a
;
a
=
[]}
this
.
push
({
name
:
c
,
params
:
a
,
adapt
:
b
});
return
this
};
b
.
addBool
=
function
(
a
,
b
){
return
this
.
add
(
a
,
function
(
d
){
c
(
d
,
b
||
a
,
true
)})};
b
.
addMinMax
=
function
(
e
,
g
,
f
,
a
,
d
,
b
){
return
this
.
add
(
e
,[
d
||
"
min
"
,
b
||
"
max
"
],
function
(
b
){
var
e
=
b
.
params
.
min
,
d
=
b
.
params
.
max
;
if
(
e
&&
d
)
c
(
b
,
a
,[
e
,
d
]);
else
if
(
e
)
c
(
b
,
g
,
e
);
else
d
&&
c
(
b
,
f
,
d
)})};
b
.
addSingleVal
=
function
(
a
,
b
,
d
){
return
this
.
add
(
a
,[
b
||
"
val
"
],
function
(
e
){
c
(
e
,
d
||
a
,
e
.
params
[
b
])})};
d
.
addMethod
(
"
__dummy__
"
,
function
(){
return
true
});
d
.
addMethod
(
"
regex
"
,
function
(
b
,
c
,
d
){
var
a
;
if
(
this
.
optional
(
c
))
return
true
;
a
=
(
new
RegExp
(
d
)).
exec
(
b
);
return
a
&&
a
.
index
===
0
&&
a
[
0
].
length
===
b
.
length
});
d
.
addMethod
(
"
nonalphamin
"
,
function
(
c
,
d
,
b
){
var
a
;
if
(
b
){
a
=
c
.
match
(
/
\W
/g
);
a
=
a
&&
a
.
length
>=
b
}
return
a
});
if
(
d
.
methods
.
extension
){
b
.
addSingleVal
(
"
accept
"
,
"
mimtype
"
);
b
.
addSingleVal
(
"
extension
"
,
"
extension
"
)}
else
b
.
addSingleVal
(
"
extension
"
,
"
extension
"
,
"
accept
"
);
b
.
addSingleVal
(
"
regex
"
,
"
pattern
"
);
b
.
addBool
(
"
creditcard
"
).
addBool
(
"
date
"
).
addBool
(
"
digits
"
).
addBool
(
"
email
"
).
addBool
(
"
number
"
).
addBool
(
"
url
"
);
b
.
addMinMax
(
"
length
"
,
"
minlength
"
,
"
maxlength
"
,
"
rangelength
"
).
addMinMax
(
"
range
"
,
"
min
"
,
"
max
"
,
"
range
"
);
b
.
addMinMax
(
"
minlength
"
,
"
minlength
"
).
addMinMax
(
"
maxlength
"
,
"
minlength
"
,
"
maxlength
"
);
b
.
add
(
"
equalto
"
,[
"
other
"
],
function
(
b
){
var
i
=
h
(
b
.
element
.
name
),
j
=
b
.
params
.
other
,
d
=
g
(
j
,
i
),
e
=
a
(
b
.
form
).
find
(
"
:input
"
).
filter
(
"
[name='
"
+
f
(
d
)
+
"
']
"
)[
0
];
c
(
b
,
"
equalTo
"
,
e
)});
b
.
add
(
"
required
"
,
function
(
a
){(
a
.
element
.
tagName
.
toUpperCase
()
!==
"
INPUT
"
||
a
.
element
.
type
.
toUpperCase
()
!==
"
CHECKBOX
"
)
&&
c
(
a
,
"
required
"
,
true
)});
b
.
add
(
"
remote
"
,[
"
url
"
,
"
type
"
,
"
additionalfields
"
],
function
(
b
){
var
d
=
{
url
:
b
.
params
.
url
,
type
:
b
.
params
.
type
||
"
GET
"
,
data
:{}},
e
=
h
(
b
.
element
.
name
);
a
.
each
(
j
(
b
.
params
.
additionalfields
||
b
.
element
.
name
),
function
(
i
,
h
){
var
c
=
g
(
h
,
e
);
d
.
data
[
c
]
=
function
(){
var
d
=
a
(
b
.
form
).
find
(
"
:input
"
).
filter
(
"
[name='
"
+
f
(
c
)
+
"
']
"
);
return
d
.
is
(
"
:checkbox
"
)?
d
.
filter
(
"
:checked
"
).
val
()
||
d
.
filter
(
"
:hidden
"
).
val
()
||
""
:
d
.
is
(
"
:radio
"
)?
d
.
filter
(
"
:checked
"
).
val
()
||
""
:
d
.
val
()}});
c
(
b
,
"
remote
"
,
d
)});
b
.
add
(
"
password
"
,[
"
min
"
,
"
nonalphamin
"
,
"
regex
"
],
function
(
a
){
a
.
params
.
min
&&
c
(
a
,
"
minlength
"
,
a
.
params
.
min
);
a
.
params
.
nonalphamin
&&
c
(
a
,
"
nonalphamin
"
,
a
.
params
.
nonalphamin
);
a
.
params
.
regex
&&
c
(
a
,
"
regex
"
,
a
.
params
.
regex
)});
a
(
function
(){
d
.
unobtrusive
.
parse
(
document
)})})(
jQuery
);
\ No newline at end of file
// Unobtrusive validation support library for jQuery and jQuery Validate
// Copyright (C) Microsoft Corporation. All rights reserved.
// @version v3.2.9
!
function
(
a
){
"
function
"
==
typeof
define
&&
define
.
amd
?
define
(
"
jquery.validate.unobtrusive
"
,[
"
jquery.validation
"
],
a
):
"
object
"
==
typeof
module
&&
module
.
exports
?
module
.
exports
=
a
(
require
(
"
jquery-validation
"
)):
jQuery
.
validator
.
unobtrusive
=
a
(
jQuery
)}(
function
(
a
){
function
e
(
a
,
e
,
n
){
a
.
rules
[
e
]
=
n
,
a
.
message
&&
(
a
.
messages
[
e
]
=
a
.
message
)}
function
n
(
a
){
return
a
.
replace
(
/^
\s
+|
\s
+$/g
,
""
).
split
(
/
\s
*,
\s
*/g
)}
function
t
(
a
){
return
a
.
replace
(
/
([
!"#$%&'()*+,.
\/
:;<=>?@
\[\\\]
^`{|}~
])
/g
,
"
\\
$1
"
)}
function
r
(
a
){
return
a
.
substr
(
0
,
a
.
lastIndexOf
(
"
.
"
)
+
1
)}
function
i
(
a
,
e
){
return
0
===
a
.
indexOf
(
"
*.
"
)
&&
(
a
=
a
.
replace
(
"
*.
"
,
e
)),
a
}
function
o
(
e
,
n
){
var
r
=
a
(
this
).
find
(
"
[data-valmsg-for='
"
+
t
(
n
[
0
].
name
)
+
"
']
"
),
i
=
r
.
attr
(
"
data-valmsg-replace
"
),
o
=
i
?
a
.
parseJSON
(
i
)
!==!
1
:
null
;
r
.
removeClass
(
"
field-validation-valid
"
).
addClass
(
"
field-validation-error
"
),
e
.
data
(
"
unobtrusiveContainer
"
,
r
),
o
?(
r
.
empty
(),
e
.
removeClass
(
"
input-validation-error
"
).
appendTo
(
r
)):
e
.
hide
()}
function
d
(
e
,
n
){
var
t
=
a
(
this
).
find
(
"
[data-valmsg-summary=true]
"
),
r
=
t
.
find
(
"
ul
"
);
r
&&
r
.
length
&&
n
.
errorList
.
length
&&
(
r
.
empty
(),
t
.
addClass
(
"
validation-summary-errors
"
).
removeClass
(
"
validation-summary-valid
"
),
a
.
each
(
n
.
errorList
,
function
(){
a
(
"
<li />
"
).
html
(
this
.
message
).
appendTo
(
r
)}))}
function
s
(
e
){
var
n
=
e
.
data
(
"
unobtrusiveContainer
"
);
if
(
n
){
var
t
=
n
.
attr
(
"
data-valmsg-replace
"
),
r
=
t
?
a
.
parseJSON
(
t
):
null
;
n
.
addClass
(
"
field-validation-valid
"
).
removeClass
(
"
field-validation-error
"
),
e
.
removeData
(
"
unobtrusiveContainer
"
),
r
&&
n
.
empty
()}}
function
l
(
e
){
var
n
=
a
(
this
),
t
=
"
__jquery_unobtrusive_validation_form_reset
"
;
if
(
!
n
.
data
(
t
)){
n
.
data
(
t
,
!
0
);
try
{
n
.
data
(
"
validator
"
).
resetForm
()}
finally
{
n
.
removeData
(
t
)}
n
.
find
(
"
.validation-summary-errors
"
).
addClass
(
"
validation-summary-valid
"
).
removeClass
(
"
validation-summary-errors
"
),
n
.
find
(
"
.field-validation-error
"
).
addClass
(
"
field-validation-valid
"
).
removeClass
(
"
field-validation-error
"
).
removeData
(
"
unobtrusiveContainer
"
).
find
(
"
>*
"
).
removeData
(
"
unobtrusiveContainer
"
)}}
function
u
(
e
){
var
n
=
a
(
e
),
t
=
n
.
data
(
v
),
r
=
a
.
proxy
(
l
,
e
),
i
=
f
.
unobtrusive
.
options
||
{},
u
=
function
(
n
,
t
){
var
r
=
i
[
n
];
r
&&
a
.
isFunction
(
r
)
&&
r
.
apply
(
e
,
t
)};
return
t
||
(
t
=
{
options
:{
errorClass
:
i
.
errorClass
||
"
input-validation-error
"
,
errorElement
:
i
.
errorElement
||
"
span
"
,
errorPlacement
:
function
(){
o
.
apply
(
e
,
arguments
),
u
(
"
errorPlacement
"
,
arguments
)},
invalidHandler
:
function
(){
d
.
apply
(
e
,
arguments
),
u
(
"
invalidHandler
"
,
arguments
)},
messages
:{},
rules
:{},
success
:
function
(){
s
.
apply
(
e
,
arguments
),
u
(
"
success
"
,
arguments
)}},
attachValidation
:
function
(){
n
.
off
(
"
reset.
"
+
v
,
r
).
on
(
"
reset.
"
+
v
,
r
).
validate
(
this
.
options
)},
validate
:
function
(){
return
n
.
validate
(),
n
.
valid
()}},
n
.
data
(
v
,
t
)),
t
}
var
m
,
f
=
a
.
validator
,
v
=
"
unobtrusiveValidation
"
;
return
f
.
unobtrusive
=
{
adapters
:[],
parseElement
:
function
(
e
,
n
){
var
t
,
r
,
i
,
o
=
a
(
e
),
d
=
o
.
parents
(
"
form
"
)[
0
];
d
&&
(
t
=
u
(
d
),
t
.
options
.
rules
[
e
.
name
]
=
r
=
{},
t
.
options
.
messages
[
e
.
name
]
=
i
=
{},
a
.
each
(
this
.
adapters
,
function
(){
var
n
=
"
data-val-
"
+
this
.
name
,
t
=
o
.
attr
(
n
),
s
=
{};
void
0
!==
t
&&
(
n
+=
"
-
"
,
a
.
each
(
this
.
params
,
function
(){
s
[
this
]
=
o
.
attr
(
n
+
this
)}),
this
.
adapt
({
element
:
e
,
form
:
d
,
message
:
t
,
params
:
s
,
rules
:
r
,
messages
:
i
}))}),
a
.
extend
(
r
,{
__dummy__
:
!
0
}),
n
||
t
.
attachValidation
())},
parse
:
function
(
e
){
var
n
=
a
(
e
),
t
=
n
.
parents
().
addBack
().
filter
(
"
form
"
).
add
(
n
.
find
(
"
form
"
)).
has
(
"
[data-val=true]
"
);
n
.
find
(
"
[data-val=true]
"
).
each
(
function
(){
f
.
unobtrusive
.
parseElement
(
this
,
!
0
)}),
t
.
each
(
function
(){
var
a
=
u
(
this
);
a
&&
a
.
attachValidation
()})}},
m
=
f
.
unobtrusive
.
adapters
,
m
.
add
=
function
(
a
,
e
,
n
){
return
n
||
(
n
=
e
,
e
=
[]),
this
.
push
({
name
:
a
,
params
:
e
,
adapt
:
n
}),
this
},
m
.
addBool
=
function
(
a
,
n
){
return
this
.
add
(
a
,
function
(
t
){
e
(
t
,
n
||
a
,
!
0
)})},
m
.
addMinMax
=
function
(
a
,
n
,
t
,
r
,
i
,
o
){
return
this
.
add
(
a
,[
i
||
"
min
"
,
o
||
"
max
"
],
function
(
a
){
var
i
=
a
.
params
.
min
,
o
=
a
.
params
.
max
;
i
&&
o
?
e
(
a
,
r
,[
i
,
o
]):
i
?
e
(
a
,
n
,
i
):
o
&&
e
(
a
,
t
,
o
)})},
m
.
addSingleVal
=
function
(
a
,
n
,
t
){
return
this
.
add
(
a
,[
n
||
"
val
"
],
function
(
r
){
e
(
r
,
t
||
a
,
r
.
params
[
n
])})},
f
.
addMethod
(
"
__dummy__
"
,
function
(
a
,
e
,
n
){
return
!
0
}),
f
.
addMethod
(
"
regex
"
,
function
(
a
,
e
,
n
){
var
t
;
return
!!
this
.
optional
(
e
)
||
(
t
=
new
RegExp
(
n
).
exec
(
a
),
t
&&
0
===
t
.
index
&&
t
[
0
].
length
===
a
.
length
)}),
f
.
addMethod
(
"
nonalphamin
"
,
function
(
a
,
e
,
n
){
var
t
;
return
n
&&
(
t
=
a
.
match
(
/
\W
/g
),
t
=
t
&&
t
.
length
>=
n
),
t
}),
f
.
methods
.
extension
?(
m
.
addSingleVal
(
"
accept
"
,
"
mimtype
"
),
m
.
addSingleVal
(
"
extension
"
,
"
extension
"
)):
m
.
addSingleVal
(
"
extension
"
,
"
extension
"
,
"
accept
"
),
m
.
addSingleVal
(
"
regex
"
,
"
pattern
"
),
m
.
addBool
(
"
creditcard
"
).
addBool
(
"
date
"
).
addBool
(
"
digits
"
).
addBool
(
"
email
"
).
addBool
(
"
number
"
).
addBool
(
"
url
"
),
m
.
addMinMax
(
"
length
"
,
"
minlength
"
,
"
maxlength
"
,
"
rangelength
"
).
addMinMax
(
"
range
"
,
"
min
"
,
"
max
"
,
"
range
"
),
m
.
addMinMax
(
"
minlength
"
,
"
minlength
"
).
addMinMax
(
"
maxlength
"
,
"
minlength
"
,
"
maxlength
"
),
m
.
add
(
"
equalto
"
,[
"
other
"
],
function
(
n
){
var
o
=
r
(
n
.
element
.
name
),
d
=
n
.
params
.
other
,
s
=
i
(
d
,
o
),
l
=
a
(
n
.
form
).
find
(
"
:input
"
).
filter
(
"
[name='
"
+
t
(
s
)
+
"
']
"
)[
0
];
e
(
n
,
"
equalTo
"
,
l
)}),
m
.
add
(
"
required
"
,
function
(
a
){
"
INPUT
"
===
a
.
element
.
tagName
.
toUpperCase
()
&&
"
CHECKBOX
"
===
a
.
element
.
type
.
toUpperCase
()
||
e
(
a
,
"
required
"
,
!
0
)}),
m
.
add
(
"
remote
"
,[
"
url
"
,
"
type
"
,
"
additionalfields
"
],
function
(
o
){
var
d
=
{
url
:
o
.
params
.
url
,
type
:
o
.
params
.
type
||
"
GET
"
,
data
:{}},
s
=
r
(
o
.
element
.
name
);
a
.
each
(
n
(
o
.
params
.
additionalfields
||
o
.
element
.
name
),
function
(
e
,
n
){
var
r
=
i
(
n
,
s
);
d
.
data
[
r
]
=
function
(){
var
e
=
a
(
o
.
form
).
find
(
"
:input
"
).
filter
(
"
[name='
"
+
t
(
r
)
+
"
']
"
);
return
e
.
is
(
"
:checkbox
"
)?
e
.
filter
(
"
:checked
"
).
val
()
||
e
.
filter
(
"
:hidden
"
).
val
()
||
""
:
e
.
is
(
"
:radio
"
)?
e
.
filter
(
"
:checked
"
).
val
()
||
""
:
e
.
val
()}}),
e
(
o
,
"
remote
"
,
d
)}),
m
.
add
(
"
password
"
,[
"
min
"
,
"
nonalphamin
"
,
"
regex
"
],
function
(
a
){
a
.
params
.
min
&&
e
(
a
,
"
minlength
"
,
a
.
params
.
min
),
a
.
params
.
nonalphamin
&&
e
(
a
,
"
nonalphamin
"
,
a
.
params
.
nonalphamin
),
a
.
params
.
regex
&&
e
(
a
,
"
regex
"
,
a
.
params
.
regex
)}),
m
.
add
(
"
fileextensions
"
,[
"
extensions
"
],
function
(
a
){
e
(
a
,
"
extension
"
,
a
.
params
.
extensions
)}),
a
(
function
(){
f
.
unobtrusive
.
parse
(
document
)}),
f
.
unobtrusive
});
\ No newline at end of file
软件系统浏览器模版/Web.config
浏览文件 @
69cd7ed3
...
...
@@ -31,6 +31,14 @@
<
assemblyIdentity
name
=
"WebGrease"
publicKeyToken
=
"31bf3856ad364e35"
/>
<
bindingRedirect
oldVersion
=
"0.0.0.0-1.6.5135.21930"
newVersion
=
"1.6.5135.21930"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"Antlr3.Runtime"
publicKeyToken
=
"eb42632606e9261f"
culture
=
"neutral"
/>
<
bindingRedirect
oldVersion
=
"0.0.0.0-3.5.0.2"
newVersion
=
"3.5.0.2"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"System.Diagnostics.DiagnosticSource"
publicKeyToken
=
"cc7b13ffcd2ddd51"
culture
=
"neutral"
/>
<
bindingRedirect
oldVersion
=
"0.0.0.0-4.0.2.1"
newVersion
=
"4.0.2.1"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"System.Web.Helpers"
publicKeyToken
=
"31bf3856ad364e35"
/>
<
bindingRedirect
oldVersion
=
"1.0.0.0-3.0.0.0"
newVersion
=
"3.0.0.0"
/>
...
...
@@ -40,16 +48,12 @@
<
bindingRedirect
oldVersion
=
"1.0.0.0-3.0.0.0"
newVersion
=
"3.0.0.0"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"System.Web.Mvc"
publicKeyToken
=
"31bf3856ad364e35"
/>
<
bindingRedirect
oldVersion
=
"1.0.0.0-5.2.3.0"
newVersion
=
"5.2.3.0"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"Antlr3.Runtime"
publicKeyToken
=
"eb42632606e9261f"
culture
=
"neutral"
/>
<
bindingRedirect
oldVersion
=
"0.0.0.0-3.5.0.2"
newVersion
=
"3.5.0.2"
/>
<
assemblyIdentity
name
=
"Microsoft.AspNet.TelemetryCorrelation"
publicKeyToken
=
"31bf3856ad364e35"
culture
=
"neutral"
/>
<
bindingRedirect
oldVersion
=
"0.0.0.0-1.0.3.0"
newVersion
=
"1.0.3.0"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"System.
Diagnostics.DiagnosticSource"
publicKeyToken
=
"cc7b13ffcd2ddd51"
culture
=
"neutral
"
/>
<
bindingRedirect
oldVersion
=
"
0.0.0.0-4.0.2.1"
newVersion
=
"4.0.2.1
"
/>
<
assemblyIdentity
name
=
"System.
Web.Mvc"
publicKeyToken
=
"31bf3856ad364e35
"
/>
<
bindingRedirect
oldVersion
=
"
1.0.0.0-5.2.5.0"
newVersion
=
"5.2.5.0
"
/>
</
dependentAssembly
>
</
assemblyBinding
>
</
runtime
>
...
...
软件系统浏览器模版/packages.config
浏览文件 @
69cd7ed3
...
...
@@ -2,29 +2,29 @@
<
packages
>
<
package
id
=
"Antlr"
version
=
"3.5.0.2"
targetFramework
=
"net45"
/>
<
package
id
=
"bootstrap"
version
=
"3.3.7"
targetFramework
=
"net45"
/>
<
package
id
=
"HslCommunication"
version
=
"5.0.
4
"
targetFramework
=
"net45"
/>
<
package
id
=
"HslCommunication"
version
=
"5.0.
6
"
targetFramework
=
"net45"
/>
<
package
id
=
"jQuery"
version
=
"1.10.2"
targetFramework
=
"net45"
/>
<
package
id
=
"jQuery.Validation"
version
=
"1.1
6
.0"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.ApplicationInsights"
version
=
"2.
4.0
"
targetFramework
=
"net45"
/>
<
package
id
=
"jQuery.Validation"
version
=
"1.1
7
.0"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.ApplicationInsights"
version
=
"2.
5.1
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.ApplicationInsights.Agent.Intercept"
version
=
"2.4.0"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.ApplicationInsights.DependencyCollector"
version
=
"2.
4
.1"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.ApplicationInsights.PerfCounterCollector"
version
=
"2.
4
.1"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.ApplicationInsights.Web"
version
=
"2.
4
.1"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.ApplicationInsights.WindowsServer"
version
=
"2.
4
.1"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel"
version
=
"2.
4.0
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.Mvc"
version
=
"5.2.
3
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.Mvc.zh-Hans"
version
=
"5.2.
3
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.Razor"
version
=
"3.2.
3
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.Razor.zh-Hans"
version
=
"3.2.
3
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.TelemetryCorrelation"
version
=
"1.0.
0
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.ApplicationInsights.DependencyCollector"
version
=
"2.
5
.1"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.ApplicationInsights.PerfCounterCollector"
version
=
"2.
5
.1"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.ApplicationInsights.Web"
version
=
"2.
5
.1"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.ApplicationInsights.WindowsServer"
version
=
"2.
5
.1"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel"
version
=
"2.
5.1
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.Mvc"
version
=
"5.2.
5
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.Mvc.zh-Hans"
version
=
"5.2.
5
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.Razor"
version
=
"3.2.
5
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.Razor.zh-Hans"
version
=
"3.2.
5
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.TelemetryCorrelation"
version
=
"1.0.
3
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.Web.Optimization"
version
=
"1.1.3"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.Web.Optimization.zh-Hans"
version
=
"1.1.3"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.WebPages"
version
=
"3.2.
3
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.WebPages.zh-Hans"
version
=
"3.2.
3
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.WebPages"
version
=
"3.2.
5
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.AspNet.WebPages.zh-Hans"
version
=
"3.2.
5
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.CodeDom.Providers.DotNetCompilerPlatform"
version
=
"1.0.8"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.jQuery.Unobtrusive.Ajax"
version
=
"3.2.
3
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.jQuery.Unobtrusive.Validation"
version
=
"3.2.
3
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.Net.Compilers"
version
=
"2.
4
.0"
targetFramework
=
"net45"
developmentDependency
=
"true"
/>
<
package
id
=
"Microsoft.jQuery.Unobtrusive.Ajax"
version
=
"3.2.
5
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.jQuery.Unobtrusive.Validation"
version
=
"3.2.
9
"
targetFramework
=
"net45"
/>
<
package
id
=
"Microsoft.Net.Compilers"
version
=
"2.
8
.0"
targetFramework
=
"net45"
developmentDependency
=
"true"
/>
<
package
id
=
"Microsoft.Web.Infrastructure"
version
=
"1.0.0.0"
targetFramework
=
"net45"
/>
<
package
id
=
"Modernizr"
version
=
"2.8.3"
targetFramework
=
"net45"
/>
<
package
id
=
"Newtonsoft.Json"
version
=
"11.0.2"
targetFramework
=
"net45"
/>
...
...
软件系统浏览器模版/软件系统浏览器模版.csproj
浏览文件 @
69cd7ed3
<?xml version="1.0" encoding="utf-8"?>
<Project
ToolsVersion=
"15.0"
DefaultTargets=
"Build"
xmlns=
"http://schemas.microsoft.com/developer/msbuild/2003"
>
<Import
Project=
"..\packages\Microsoft.Net.Compilers.2.8.0\build\Microsoft.Net.Compilers.props"
Condition=
"Exists('..\packages\Microsoft.Net.Compilers.2.8.0\build\Microsoft.Net.Compilers.props')"
/>
<Import
Project=
"..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props"
Condition=
"Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')"
/>
<Import
Project=
"..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props"
Condition=
"Exists('..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props')"
/>
<Import
Project=
"$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props"
Condition=
"Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')"
/>
<PropertyGroup>
<Configuration
Condition=
" '$(Configuration)' == '' "
>
Debug
</Configuration>
...
...
@@ -57,32 +57,32 @@
<SpecificVersion>
False
</SpecificVersion>
<HintPath>
..\CommonLibrary\bin\Debug\CommonLibrary.dll
</HintPath>
</Reference>
<Reference
Include=
"HslCommunication, Version=5.0.
4
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
4
\lib\net35\HslCommunication.dll
</HintPath>
<Reference
Include=
"HslCommunication, Version=5.0.
6
.0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\HslCommunication.5.0.
6
\lib\net35\HslCommunication.dll
</HintPath>
</Reference>
<Reference
Include=
"Microsoft.AI.Agent.Intercept, Version=2.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.ApplicationInsights.Agent.Intercept.2.4.0\lib\net45\Microsoft.AI.Agent.Intercept.dll
</HintPath>
</Reference>
<Reference
Include=
"Microsoft.AI.DependencyCollector, Version=2.
4
.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.ApplicationInsights.DependencyCollector.2.
4
.1\lib\net45\Microsoft.AI.DependencyCollector.dll
</HintPath>
<Reference
Include=
"Microsoft.AI.DependencyCollector, Version=2.
5
.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.ApplicationInsights.DependencyCollector.2.
5
.1\lib\net45\Microsoft.AI.DependencyCollector.dll
</HintPath>
</Reference>
<Reference
Include=
"Microsoft.AI.PerfCounterCollector, Version=2.
4
.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.ApplicationInsights.PerfCounterCollector.2.
4
.1\lib\net45\Microsoft.AI.PerfCounterCollector.dll
</HintPath>
<Reference
Include=
"Microsoft.AI.PerfCounterCollector, Version=2.
5
.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.ApplicationInsights.PerfCounterCollector.2.
5
.1\lib\net45\Microsoft.AI.PerfCounterCollector.dll
</HintPath>
</Reference>
<Reference
Include=
"Microsoft.AI.ServerTelemetryChannel, Version=2.
4.0
.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.2.
4.0
\lib\net45\Microsoft.AI.ServerTelemetryChannel.dll
</HintPath>
<Reference
Include=
"Microsoft.AI.ServerTelemetryChannel, Version=2.
5.1
.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.2.
5.1
\lib\net45\Microsoft.AI.ServerTelemetryChannel.dll
</HintPath>
</Reference>
<Reference
Include=
"Microsoft.AI.Web, Version=2.
4
.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.ApplicationInsights.Web.2.
4
.1\lib\net45\Microsoft.AI.Web.dll
</HintPath>
<Reference
Include=
"Microsoft.AI.Web, Version=2.
5
.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.ApplicationInsights.Web.2.
5
.1\lib\net45\Microsoft.AI.Web.dll
</HintPath>
</Reference>
<Reference
Include=
"Microsoft.AI.WindowsServer, Version=2.
4
.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.ApplicationInsights.WindowsServer.2.
4
.1\lib\net45\Microsoft.AI.WindowsServer.dll
</HintPath>
<Reference
Include=
"Microsoft.AI.WindowsServer, Version=2.
5
.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.ApplicationInsights.WindowsServer.2.
5
.1\lib\net45\Microsoft.AI.WindowsServer.dll
</HintPath>
</Reference>
<Reference
Include=
"Microsoft.ApplicationInsights, Version=2.
4.0
.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.ApplicationInsights.2.
4.0
\lib\net45\Microsoft.ApplicationInsights.dll
</HintPath>
<Reference
Include=
"Microsoft.ApplicationInsights, Version=2.
5.1
.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.ApplicationInsights.2.
5.1
\lib\net45\Microsoft.ApplicationInsights.dll
</HintPath>
</Reference>
<Reference
Include=
"Microsoft.AspNet.TelemetryCorrelation, Version=1.0.
0
.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.AspNet.TelemetryCorrelation.1.0.
0
\lib\net45\Microsoft.AspNet.TelemetryCorrelation.dll
</HintPath>
<Reference
Include=
"Microsoft.AspNet.TelemetryCorrelation, Version=1.0.
3
.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.AspNet.TelemetryCorrelation.1.0.
3
\lib\net45\Microsoft.AspNet.TelemetryCorrelation.dll
</HintPath>
</Reference>
<Reference
Include=
"Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
</HintPath>
...
...
@@ -103,6 +103,24 @@
<Reference
Include=
"System.ComponentModel.DataAnnotations"
/>
<Reference
Include=
"System.Core"
/>
<Reference
Include=
"System.Data.DataSetExtensions"
/>
<Reference
Include=
"System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.AspNet.WebPages.3.2.5\lib\net45\System.Web.Helpers.dll
</HintPath>
</Reference>
<Reference
Include=
"System.Web.Mvc, Version=5.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.AspNet.Mvc.5.2.5\lib\net45\System.Web.Mvc.dll
</HintPath>
</Reference>
<Reference
Include=
"System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.AspNet.Razor.3.2.5\lib\net45\System.Web.Razor.dll
</HintPath>
</Reference>
<Reference
Include=
"System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.AspNet.WebPages.3.2.5\lib\net45\System.Web.WebPages.dll
</HintPath>
</Reference>
<Reference
Include=
"System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.AspNet.WebPages.3.2.5\lib\net45\System.Web.WebPages.Deployment.dll
</HintPath>
</Reference>
<Reference
Include=
"System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Microsoft.AspNet.WebPages.3.2.5\lib\net45\System.Web.WebPages.Razor.dll
</HintPath>
</Reference>
<Reference
Include=
"System.Xml.Linq"
/>
<Reference
Include=
"System.Web"
/>
<Reference
Include=
"System.Web.Extensions"
/>
...
...
@@ -120,33 +138,9 @@
</Reference>
<Reference
Include=
"System.Net.Http.WebRequest"
>
</Reference>
<Reference
Include=
"System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<Private>
True
</Private>
<HintPath>
..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll
</HintPath>
</Reference>
<Reference
Include=
"System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<Private>
True
</Private>
<HintPath>
..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll
</HintPath>
</Reference>
<Reference
Include=
"System.Web.Optimization"
>
<HintPath>
..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll
</HintPath>
</Reference>
<Reference
Include=
"System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<Private>
True
</Private>
<HintPath>
..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll
</HintPath>
</Reference>
<Reference
Include=
"System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<Private>
True
</Private>
<HintPath>
..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.dll
</HintPath>
</Reference>
<Reference
Include=
"System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<Private>
True
</Private>
<HintPath>
..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Deployment.dll
</HintPath>
</Reference>
<Reference
Include=
"System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<Private>
True
</Private>
<HintPath>
..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll
</HintPath>
</Reference>
<Reference
Include=
"WebGrease, Version=1.6.5135.21930, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
>
<HintPath>
..\packages\WebGrease.1.6.0\lib\WebGrease.dll
</HintPath>
</Reference>
...
...
@@ -193,9 +187,9 @@
<Content
Include=
"Scripts\bootstrap.min.js"
/>
<Content
Include=
"Scripts\jquery-1.10.2.js"
/>
<Content
Include=
"Scripts\jquery-1.10.2.min.js"
/>
<None
Include=
"Scripts\jquery.validate-vsdoc.js"
/>
<Content
Include=
"Scripts\jquery.unobtrusive-ajax.js"
/>
<Content
Include=
"Scripts\jquery.unobtrusive-ajax.min.js"
/>
<None
Include=
"Scripts\jquery.validate-vsdoc.js"
/>
<Content
Include=
"Scripts\jquery.validate.js"
/>
<Content
Include=
"Scripts\jquery.validate.min.js"
/>
<Content
Include=
"Scripts\jquery.validate.unobtrusive.js"
/>
...
...
@@ -281,8 +275,8 @@
<PropertyGroup>
<ErrorText>
这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。
</ErrorText>
</PropertyGroup>
<Error
Condition=
"!Exists('..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props')"
Text=
"$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props'))"
/>
<Error
Condition=
"!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')"
Text=
"$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))"
/>
<Error
Condition=
"!Exists('..\packages\Microsoft.Net.Compilers.2.8.0\build\Microsoft.Net.Compilers.props')"
Text=
"$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.2.8.0\build\Microsoft.Net.Compilers.props'))"
/>
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录