我正在开发一个我没有创建的ASP.NET MVC 2应用程序.在模型绑定期间修剪应用程序中的所有输入字段.但是,我想要一个NoTrim属性来阻止修剪某些字段.
例如,我有以下状态下拉字段:
<select name="State">
<option value="">Select one...</option>
<option value=" ">International</option>
<option value="AA">Armed Forces Central/SA</option>
<option value="AE">Armed Forces Europe</option>
<option value="AK">Alaska</option>
<option value="AL">Alabama</option>
...
Run Code Online (Sandbox Code Playgroud)
问题是当用户选择"国际"时,我得到验证错误,因为两个空格被修剪,State是必填字段.
这是我希望能够做到的:
[Required( ErrorMessage = "State is required" )]
[NoTrim]
public string State { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所获得的属性:
[AttributeUsage( AttributeTargets.Property, AllowMultiple = false )]
public sealed class NoTrimAttribute : Attribute
{
}
Run Code Online (Sandbox Code Playgroud)
在Application_Start中设置了一个自定义模型绑定器:
protected void Application_Start()
{
ModelBinders.Binders.DefaultBinder = new MyModelBinder();
...
Run Code Online (Sandbox Code Playgroud)
以下是修剪模型活页夹的一部分:
protected override void SetProperty( ControllerContext controllerContext,
ModelBindingContext bindingContext,
PropertyDescriptor propertyDescriptor,
object value …Run Code Online (Sandbox Code Playgroud) asp.net-mvc customvalidator custom-attributes model-binding data-annotations
我有一个私人Git仓库节点依赖关系的项目。我需要能够运行npm install而不会被提示输入密码,或允许SSH连接,所以我使用的令牌,我在我的package.json在GitHub上创建一个访问:
"dependencies": {
"sass-theme": "git+https://[token]:x-oauth-basic@github.com/MyOrg/sass-theme.git#v1.0.2",
"node-sass": "^4.5.0"
}
Run Code Online (Sandbox Code Playgroud)
该项目是与其他几十人的共享,所以很明显,我不想让我的令牌源控制。我知道我可以创建在GitHub上一个只读的部署重点,但我相信这将需要其他开发人员导入SSH密钥在本地生成项目。
是否有可能创建一个访问令牌可以共享,但已只读访问克隆库?
我在登录页面上有这个代码:
<div id="header">
<div id="homeBanner">
...
</div>
</div>
<div id="navigation">
...
</div>
Run Code Online (Sandbox Code Playgroud)
我想选择div#navigation,但只有当它跟在包含div#homeBanner的div#header之后.原因是我在不同的页面上有类似的代码:
<div id="header">
<div id="siteBanner">
...
</div>
</div>
<div id="navigation">
...
</div>
Run Code Online (Sandbox Code Playgroud)
我不想影响div#navigation的样式,当它跟在包含div#siteBanner的div#header之后.这有意义吗?
如何在div#heading包含div#homeBanner时选择div#navigation?我以为是:
div#header div#homeBanner > div#navigation
Run Code Online (Sandbox Code Playgroud)
......但这似乎不起作用.
由于完全不受我控制的决定,我处于以下情况:
我在catalog.org上有一个产品列表
单击产品上的"添加到购物车"按钮会发出对Secure.com/product/add/[productKey的AJAX JSONP请求,这会将购物车记录保存到数据库,使用购物车ID设置cookie,然后返回true响应(如果失败则为false)
回到catalog.org,如果响应为真,则向secure.com/cart/info发出另一个AJAX JSONP请求,该请求读取购物车ID cookie,获取记录,并返回购物车中的商品数量
再次返回catalog.org,读取响应并更新页面上的元素,显示购物车中的商品数量(如果有)
此时,单击catalog.org上的"转到购物车"按钮会在secure.com上显示购物车摘要
这在Firefox 17,Chrome 32和IE 11中运行良好.它也适用于我们开发和测试环境中的IE8 - IE10,其中catalog.org是catalog.development.com,catalog.test.com和secure.com是安全的. development.com和secure.test.com分别.
但是,在我们部署到生产之后,这停止了在IE8 - IE10中工作.将产品添加到购物车后,购物车中的商品数量会在catalog.org上成功更新.然后,在单击catalog.org上的"转到购物车"按钮后,secure.com上的购物车摘要显示任何内容,因为它无法读取cookie.在IE开发人员工具中进入缓存>"查看cookie信息"显示没有购物车ID cookie.它应该存在,就像在其他浏览器和我们的开发和测试环境中一样.
我相信正在发生的事情是IE阻止第三方cookie.我们已经为secure.com上的所有请求添加了一个P3P精简策略标头,但cookie仍未设置.我们设置的标题是:
P3P: CP="CAO PSA OUR"
Run Code Online (Sandbox Code Playgroud)
为什么不在IE8-IE10中添加紧凑的策略头修复此问题?我怎样才能解决这个问题,以便在IE的所有版本中使用?
解
下面有几个好主意.我接受了@ sdecima's,因为它听起来最有希望.我们最终结合了其中的一些想法,但设法避免了XDomainRequest:
- 单击产品上的"添加到购物车"按钮会发出对Secure.com/product/add/[productKey的AJAX JSONP请求,这会将购物车记录保存到数据库,使用购物车ID设置cookie,然后返回true响应(如果失败则为false)
我们在secure.com/product/add上更改了操作,以返回一个JSON对象,其中包含指示成功或失败的布尔值以及购物车ID.
- 回到catalog.org,如果响应为真,则向secure.com/cart/info发出另一个AJAX JSONP请求,该请求读取购物车ID cookie,获取记录,并返回购物车中的商品数量
我们更改了回调函数以检查响应对象中的两个属性.如果成功,并且存在购物车ID,我们会在页面上创建隐藏的iframe.srciframe 的属性设置为我们添加到secure.com的新端点.此操作接受购物车ID参数并保存购物车ID Cookie.我们不再需要在secure.com/product/add操作中保存cookie.
接下来,我们更改了secure.com/cart/info上的操作以接受购物车ID参数.此操作将使用购物车ID参数(如果存在)来获取购物车信息,否则它仍将尝试读取cookie.如果我们可以保证iframe已经完成加载并且cookie已经保存在secure.com上,那么这个额外的检查将是不必要的,但是由于浏览器安全限制,我们无法知道iframe何时在catalog.org上完成加载.
最后,CP="CAO PSA OUR"仍然需要P3P标头才能在IE7-IE10中工作.(是的,这也适用于IE7 :)
我们现在有一个解决方案(尽管是一个非常复杂的解决方案),用于保存和访问适用于所有主流浏览器的跨域cookie,至少在我们能够可靠测试的时候.
我们可能会对此进行一些重构.首先,此时对secure.com/cart/info的第二个AJAX JSONP请求是多余的,因为我们可以将原始请求中所需的所有信息返回到secure.com/product/add操作(更改的附带好处)该操作返回一个JSON对象 - 加上我们可以返回一条错误消息,指出如果出现错误则确切失败的原因).
当我尝试渲染缩小的TinyMCE包时,Internet Explorer很合适.因此,为了创建一个避免缩小的包,我按照这些说明在BundleConfig中设置了"通用"或"基本"包:
bundles.Add( new Bundle( "~/Scripts/tinymce" )
.Include( "~/Scripts/tinymce/tinymce.min.js",
"~/Scripts/tinymce/jquery.tinymce.min.js" ) );
Run Code Online (Sandbox Code Playgroud)
如何在页面上呈现此内容?以下所有内容似乎都不起作用:
@Bundles.Render( "~/Scripts/tinymce" )
@Bundle.Render( "~/Scripts/tinymce" )
@Bundle( "~/Scripts/tinymce" )
Run Code Online (Sandbox Code Playgroud)
这至少呈现标记:
@Scripts.Render( "~/Scripts/tinymce" )
Run Code Online (Sandbox Code Playgroud)
但它在尝试加载文件时抛出403错误:
"NetworkError: 403 Forbidden - http://localhost:1062/Scripts/tinymce/?v=MTojK5ORvAZmonNqNGJ3aWhOYyor-Fa8dZHTqfSOlUM1"
Run Code Online (Sandbox Code Playgroud) 我有一个带有分支参数的 Jenkins 作业,设置为每 5 分钟轮询一次 SCM,并从 SCM 运行管道脚本:
脚本做的第一件事是删除以前的工作区并获取源代码的新副本:
#!/usr/bin/env groovy
node {
try {
stage('Get Source') {
// Clear the workspace
deleteDir()
// Get the source code
checkout scm
}
// Stages for building and running unit tests...
}
}
Run Code Online (Sandbox Code Playgroud)
根据 Git 轮询日志,它每 5 分钟检查一次存储库,但没有发现任何更改:
Started on Mar 13, 2019 4:29:34 PM
Using strategy: Default
[poll] Last Built Revision: Revision 47251333f2d6c740275f24dd667255e66f7b5665 (refs/remotes/origin/master)
using credential **********
> git --version # timeout=10
using GIT_SSH to set credentials Jenkins SSH Authentication Key …Run Code Online (Sandbox Code Playgroud) 每次我将应用程序的 Firebase 依赖项更新为 2020 年 2 月 27 日更新之后的任何内容时,我都会在运行应用程序时开始看到此异常:
04-29 18:21:58.170 3314 3541 E Firebase-Installations: Firebase Installations can not communicate with Firebase server APIs due to invalid configuration. Please update your Firebase initialization process and set valid Firebase options (API key, Project ID, Application ID) when initializing Firebase.
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: Failed to get FIS auth token
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: java.util.concurrent.ExecutionException: com.google.firebase.installations.FirebaseInstallationsException
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at com.google.android.gms.tasks.Tasks.zzb(Unknown Source:61)
04-29 18:21:58.177 3314 …Run Code Online (Sandbox Code Playgroud) 这是我的配置文件(dansguardian-config):
banned-phrase duck
banned-site allaboutbirds.org
Run Code Online (Sandbox Code Playgroud)
我想写一个bash脚本,它将读取此配置文件并为我创建一些其他文件.这是我到目前为止所做的,它主要是伪代码:
while read line
do
# if line starts with "banned-phrase"
# add rest of line to file bannedphraselist
# fi
# if line starts with "banned-site"
# add rest of line to file bannedsitelist
# fi
done < dansguardian-config
Run Code Online (Sandbox Code Playgroud)
我不确定我是否需要使用grep,sed,awk或者什么.
希望有道理.我真的很讨厌DansGuardian名单.
我使用后,git stash不会显示未跟踪的文件git stash save -u:
D:\kzxd-usm\KzxdUsm>git status
Already up-to-date!
# On branch work
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# WebRoot/WEB-INF/jsp/usm/org/Copy of list.jsp
nothing added to commit but untracked files present (use "git add" to track)
Run Code Online (Sandbox Code Playgroud)
我想列出未跟踪的文件,并将其保存为git stash save -u:
D:\kzxd-usm\KzxdUsm>git stash list --stat
stash@{0}: On work: hide copy of list.jsp
Run Code Online (Sandbox Code Playgroud)
它只有一点注释文本,没有隐藏的文件信息。
这有效:
public IDictionary<int, object> GetProducts( int departmentID )
{
return new Dictionary<int, object>
{
{ 1, new { Description = "Something" } },
{ 2, new { Description = "Whatever" } },
};
}
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,这不是:
public IDictionary<int, object> GetProducts( int departmentID )
{
var products = ProductRepository.FindAll( p => p.Department.Id == departmentID );
return products.ToDictionary( p => p.Id, p => new { Description = p.Description } );
}
Run Code Online (Sandbox Code Playgroud)
这也不起作用:
public IDictionary<int, object> GetProducts( int departmentID )
{
var products = …Run Code Online (Sandbox Code Playgroud)