我有一个包含多个字段的表单,我正在使用JörnZaeffere的优秀jQuery Validation插件验证(其中一些字段添加了用于自定义验证的方法).如何规避使用指定的提交控件进行验证(换句话说,使用一些提交输入进行激活验证,但不要与其他人一起激活验证)?这与使用标准ASP.NET验证器控件的ValidationGroup类似.
我的情况:
它与ASP.NET WebForms有关,但如果您愿意,可以忽略它.但是,我更多地使用验证作为"推荐":换句话说,当提交表单时,验证会触发,而不是显示"必需"消息,"推荐"会显示"你推荐"的内容错过了以下领域....你还想继续吗?" 在错误容器中的那一点,现在可以看到另一个提交按钮,可以按下该按钮,忽略验证并提交.如何规避此按钮控件的表单.validate()并仍然发布?
在http://jquery.bassistance.de/validate/demo/multipart/上购买和出售房屋样本允许这样做以便点击之前的链接,但它通过创建自定义方法并将其添加到验证器来实现.我宁愿不必创建自定义方法复制验证插件中已有的功能.
以下是我现在所获得的立即适用脚本的缩短版本:
var container = $("#<%= Form.ClientID %> div.validationSuggestion");
$('#<%= Form.ClientID %>').validate({
errorContainer: container,
errorLabelContainer: $("ul",container),
rules: {
<%= YesNo.UniqueID %>: { required: true },
<%= ShortText.UniqueID %>: { required: true } // etc.
},
messages: {
<%= YesNo.UniqueID %>: 'A message.',
<%= ShortText.UniqueID %>: 'Another message.' // etc.
},
highlight: function(element, errorClass) {
$(element).addClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").removeClass("valid");
},
unhighlight: function(element, errorClass) {
$(element).removeClass(errorClass);
$(element.form).find("label[for=" …Run Code Online (Sandbox Code Playgroud) 有没有人知道键盘快捷键来关闭除Visual Studio中当前选项卡以外的所有选项卡?虽然我们在这里,关闭所有标签的快捷方式?这有一个Resharper选项吗?我看过去,从来没有找到它.
我知道NHibernate 2的一个重大变化是*不再支持NHibernate.Nullables.因此,您在映射文件中使用什么来映射可为空的DateTime?类型?对于ie:
可以理解的是不起作用:
<property name="CreateDate" column="CreateDate" type="DateTime?" not-null="false" />
Run Code Online (Sandbox Code Playgroud)
不再支持:
<property name="ModifiedDate" column="ModifiedDate" type="Nullables.NHibernate.NullableDateTimeType, Nullables.NHibernate" not-null="false"/>
Run Code Online (Sandbox Code Playgroud)
我知道它一定很明显,但我找不到它!
答案很简单:NHibernate会反映出有问题的类,并发现该属性的反射类型是DateTime?一切都靠自己.
谢谢@Justice!
我需要更多的帮助来"获得"像Ninject这样的DI框架如何超越基础.
拿Ninject样本:
class Samurai {
private IWeapon _weapon;
[Inject]
public Samurai(IWeapon weapon) {
_weapon = weapon;
}
public void Attack(string target) {
_weapon.Hit(target);
}
}
Run Code Online (Sandbox Code Playgroud)
没有DI框架(即上面的[Inject]引用),引用类看起来像:
class Program {
public static void Main() {
Samurai warrior1 = new Samurai(new Shuriken());
Samurai warrior2 = new Samurai(new Sword());
warrior1.Attack("the evildoers");
warrior2.Attack("the evildoers");
}
}
Run Code Online (Sandbox Code Playgroud)
...你正在新的一切.是的,你已经删除了Samurai中的依赖项,但是现在你已经在链上向前迈进了一步.简单.
使用Ninject,你可以通过以下方式摆脱新的一切:
class Program {
public static void Main() {
IKernel kernel = new StandardKernel(new WarriorModule());
Samurai warrior = kernel.Get<Samurai>();
warrior.Attack("the evildoers");
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这是我的困惑领域:没有使某种服务定位器能够有效地新建适用的内核和模块(即.IoC.TypeResolver.Get <>()),什么是a)最好的方法不必到处都是新内核(服务定位器引用到处都是?),b)更重要的是,当你有一个依赖于自己的依赖关系的大型长链时,你会把它带到一路注入极端我确信这是一种严重的反模式(朋友称之为"热土豆依赖注入"反模式).
换句话说,我认为DI框架魔术的一部分是你不必一直向上插入依赖关系(即你的第一个引用在其构造函数中包含10个参数,其中没有任何与任何事情,直到链条更进一步) - …
我有一个组件,它<tr>根据通过AJAX调用检索的数据数组生成一个包含数据行(等)的表.一切都适用于编辑和添加数据,但我无法确定如何制作数组的不同副本(包含所包含对象的不同副本 - 由val,而不是由ref),以便当我删除指定的行时数据,适用的行将从表中删除.
目前,因为包含的对象是ref,即使我制作了数组的副本,我的表也删除了最后一行(即使行索引和数据都在我的AJAX调用中被正确引用和删除).
handleRowDelete: function(rowIdx) {
// Correct row
var row = this.state.data[rowIdx];
// This makes a new array, but the contained objects are still by ref
var rows = this.state.data.slice();
// This contains the proper row that will be deleted. If this array is set to data, the table is updated to reflect just the one row - as expected.
var throwout = rows.splice(rowIdx, 1);
console.log(throwout);
// Whether I set via the React.addons:
var …Run Code Online (Sandbox Code Playgroud) 我有以下映射:
public class LogEntryMap
{
public LogEntryMap()
{
Map.Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Context).CustomSqlType("varchar").Length(512);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,使用SchemaExport在SQL Server 2008中生成数据库时,生成的脚本会忽略长度,因此实际上它最终为varchar长度为1:
create table OV_SAC.dbo.[LogEntry] (
Id BIGINT IDENTITY NOT NULL,
Context varchar null,
primary key (Id)
)
Run Code Online (Sandbox Code Playgroud)
.CustomSqlType("varchar 512")抛出一个例外.并且没有定义CustomSqlType,字符串被映射到nvarchar(它确实尊重Length属性).
有什么建议?
我目前无法<select>在Firefox(38.0.5)中选中启用Select2的元素 - 换句话说,无法以<option>无鼠标的方式进行选择.在Chrome中,您可以在表单中进行制表,然后按enter,以便开始在Select2 select元素中选择一个项目.我没有在其他浏览器中测试过,但在提交实际错误报告之前,我想验证其他浏览器是否遇到同样的问题?
您可以在演示页面上复制.
对于LINQ来说,我是新手......
我有一个IEnumerable通用列表,其中包含不同版本的答案(每个版本都有一个问题的FK).从这个列表中我只需要获得最新版本答案的字典.
一个非常简化的类图:
问题
-ID
-question
- ......其他属性
答
-ID
-Version
-QuestionID
-值
- ...其他属性
目前我有以下内容:
IEnumerable<Answer> answers = GetAnswers();
IDictionary<long, AnswerDTO> latestVersionAnswers = new Dictionary<long, AnswerDTO>();
if (answers != null)
{
latestVersionAnswers = answers
.OrderBy(e => e.ID)
.GroupBy(e => e.Question.ID)
.Select(g => new AnswerDTO
{
Version = g.Last().Version, // g.Select(e => e.Version).Max(),
QuestionID = g.Key,
ID = g.Last().ID,
Value = g.Last().Value
}).ToDictionary(c => c.QuestionID);
}
Run Code Online (Sandbox Code Playgroud)
虽然这在很大程度上起作用,但您可以很快发现它需要一些严肃的优化(并且有点脆弱,因为它取决于答案记录行顺序而不是"最大"逻辑).使用LINQ执行此操作的最佳方法是什么,或者最好只为每个循环执行多个操作?
任何指针或帮助将不胜感激!
我们正在使用VisualSVN从SourceGear Vault切换到TortoiseSVN以进行Visual Studio集成 - 非常喜欢它.但是,我们在多个不同的应用程序中引用了多个类库,这些应用程序不是任何应用程序中工作副本根目录的一部分.处理此问题的最佳方法是什么,以便我们可以继续使用Visual Studio集成,但仍然保留位于每个项目/应用程序根目录之外的各种类库?SourceGear对此没有任何问题.
可以在资源管理器中使用TortoiseSVN单独添加类库,但是无法在Visual Studio中将更改提交到工作副本之外的任何内容; 也没有VisualSVN"交通灯"指示这些工作副本类库之外的状态.
顺便说一下,我们也将使用"一个包含许多项目的存储库"路径而不是多个存储库,特别是因为这是我们多年来一直工作的方式.
更新:
我重新阅读了之前看过的一些内容,发现svn:externals不仅仅是指在不同的存储库中使用代码,还可以用于在VisualSVN中使用多个工作副本.
请参阅http://www.visualsvn.com/support/topic/00007/和http://svnbook.red-bean.com/en/1.2/svn.advanced.externals.html
但是,这是处理这个问题的最佳方法吗?有一个很好的线程可以解决问题,但并不能完全解决问题.
因此,使用svn:externals与否?是否使用多个存储库?同样,多年来我们在多个解决方案/应用程序中引用了共享类库中的代码,这对我们有用.现在如何最好地使用VisualSVN?
我有一个使用Ninject 2.0的ASP.NET 3.5 WebForms应用程序.但是,尝试使用Ninject.Web扩展来向System.Web.UI.Page提供注入,即使我切换到使用服务定位器来提供引用,我也会得到对我注入的依赖项的空引用(使用Ninject ),没有问题.
我的配置(为简单而愚蠢):
public partial class Default : PageBase // which is Ninject.Web.PageBase
{
[Inject]
public IClubRepository Repository { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
var something = Repository.GetById(1); // results in null reference exception.
}
}
Run Code Online (Sandbox Code Playgroud)
... //global.asax.cs
public class Global : Ninject.Web.NinjectHttpApplication
{
/// <summary>
/// Creates a Ninject kernel that will be used to inject objects.
/// </summary>
/// <returns>
/// The created kernel.
/// </returns>
protected override IKernel CreateKernel() …Run Code Online (Sandbox Code Playgroud) c# ×2
jquery ×2
ninject ×2
.net ×1
asp.net ×1
datetime ×1
javascript ×1
lambda ×1
linq ×1
nhibernate ×1
nullable ×1
reactjs ×1
resharper ×1
schemaexport ×1
svn ×1
tortoisesvn ×1
visualsvn ×1
webforms ×1