我无法onSelect开发我的jQuery datepicker.
继承我的代码:
<script type="text/javascript">
$(function() {
$('.date-pick').datePicker( {
onSelect: function(date) {
alert(date)
},
selectWeek: true,
inline: true,
startDate: '01/01/2000',
firstDay: 1,
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
这就像它没有注册onSelect功能.我究竟做错了什么?
我的情况是我必须从底部设计并实现一个相当大的系统.我有一些(实际上很多)关于架构的问题,我希望你的评论和想法.
我不希望我在这里写得太多,但我想让大家知道系统是什么.
有关应用程序的快速信息,如果您愿意,请阅读:我无法分享有关该项目的更多细节,但基本上它是一个系统,我们为客户提供管理其用户的服务.我们有一条热线,用户拨打电话,我们的热线使用(Windows)应用程序(内联网)来管理用户的数据等.客户还有一个Web应用程序,他们可以在其中查看报告,有关其业务和用户的信息,以及修改数据的能力.修改数据不仅仅是地址等用户数据,还包括用户拥有的产品/服务的信息,这些信息可能很复杂.
这些应用程序将构建在Microsoft .NET Framework 4上,并带有MS SQL Server 2008数据库.将有一些应用程序必须访问此数据库,例如:
现在我的大问题是我应该为这样一个系统使用哪些.NET部件.对于"后端",我考虑过使用Windows Communication Foundation:
WCF会是一个不错的选择吗?
Intranet应用程序将是一个必须编辑数据库中的大量记录的应用程序.必须使用键盘轻松导航(快速使用).有一个功能,如"找到客户,找到,查找,选择此并更新".开发此应用程序的最佳选择是什么?它是WPF还是旧的Windows窗体?我不需要像WPF那样的所有花哨的图形功能,但是应用程序必须看起来不错(可能类似于新的Visual Studio/Office工具).
对于网页也存在同样的问题.他们有很多相同的工作要做,但没有内网应用程序那么多的功能,而且数据量不同(更少).
这是我现在的问题.我希望能够进行讨论,这将使我看到其中一些技术,帮助我决定架构.
我想事先表示感谢,并且让大家都知道,任何想法都会受到高度赞赏.
编辑1:似乎很多人都同意我们应该使用WCF.在数据层中引入ORM映射器和使用WCF的服务层时,必然会出现性能损失?你对此有何评论?
另一个不断涌现的问题是我们如何处理身份验证和角色.Intranet应用程序具有"主"访问权限(没有限制).但是,当客户从Web应用程序检索有关其用户的信息时,返回的内容取决于他们的"服务级别"以及与客户相关的一些其他参数.处理这个问题的最佳方法是什么?有任何模式/最佳实践吗?
我需要将传入的HTTP POST请求与正文中的数据绑定到具体类型,具体取决于ProductType数据中的分母.这是我的Web API 2操作方法:
[HttpPost, Route]
public HttpResponseMessage New(ProductBase product)
{
// Access concrete product class...
if (product is ConcreteProduct)
// Do something
else if (product is OtherConcreteProduct)
// Do something else
}
Run Code Online (Sandbox Code Playgroud)
我首先考虑使用自定义模型绑定器,但似乎无法在此时访问请求主体:
对于复杂类型,Web API尝试使用媒体类型格式化程序从邮件正文中读取值.
我无法真正看到媒体类格式化器如何解决这个问题,但我可能会遗漏一些东西.你会如何解决这个问题?
我一直在寻找实现一个实现IEditableObject的泛型类,以便我的一些ViewModel继承,以支持取消对ViewModel中属性的编辑.这主要用于WPF中具有"确定"和"取消"按钮的模式对话框.
我在网上找到了以下实现:
这对我来说似乎过于复杂,但我不确定我是否遗漏了他们提供的一些功能.对于一个他们不支持深拷贝,所以在我的世界中我们可以使用MemberwiseClone来执行浅拷贝.就像是:
private Item backupCopy;
private bool inEdit;
public void BeginEdit()
{
if (inEdit) return;
inEdit = true;
backupCopy = this.MemberwiseClone() as Item;
}
public void CancelEdit()
{
if (!inEdit) return;
inEdit = false;
this.Name = backupCopy.Name;
}
public void EndEdit()
{
if (!inEdit) return;
inEdit = false;
backupCopy = null;
}
Run Code Online (Sandbox Code Playgroud)
这个例子当然应该是ViewModel继承的通用抽象基类,但你明白了......
这有什么区别?除了不支持深拷贝之外,我的方法有哪些缺点?你如何修改它以支持深层复制(不确定是否有必要)?
发现这篇文章显示了比使用反射更好的实现.比我链接的其他两篇文章简单得多:
我们如何扩展它以支持深层复制?
我有这个参数:
$objDbCmd.Parameters.Add("@telephone", [System.Data.SqlDbType]::VarChar, 18) | Out-Null;
$objDbCmd.Parameters["@telephone"].Value = $objUser.Telephone;
Run Code Online (Sandbox Code Playgroud)
字符串$objUser.Telephone可以为空.如果它是空的,我怎么能把它转换成[DBNull]::Value?
我试过了:
if ([string]:IsNullOrEmpty($objUser.Telephone)) { $objUser.Telephone = [DBNull]::Value };
Run Code Online (Sandbox Code Playgroud)
但这给了我错误:
使用"0"参数调用"ExecuteNonQuery"的异常:"无法将参数值从ResultPropertyValueCollection转换为String."
如果我将它转换为字符串,它会插入一个空字符串"",而不是DBNull.
如何实现这一目标?
谢谢.
我想知道在ASP.NET MVC应用程序中验证数据库约束(例如UNIQUE)的最佳方法是什么,在构建时考虑到DDD,底层是Application Layer(应用程序服务),Domain Layer(域模型)和基础设施层(持久性逻辑,日志记录等).
我一直在查看大量的DDD样本,但是他们中没有提到的是如何在存储库中进行验证(我想这是这种类型的验证适合的地方).如果你知道任何这样做的样品,请分享它们将非常感激.
更具体地说,我有两个问题.你会如何进行实际验证?您是否通过查询数据库明确检查客户名称是否已存在,或者您是否尝试将其直接插入数据库并捕获错误(如果有的话)(看起来很乱)?我更喜欢第一个,如果选择它,是应该在存储库中完成,还是应该是应用程序服务的工作?
检测到错误时,如何将其传递给ASP.NET MVC,以便能够很好地通知用户错误?最好使用,ModelStateDictionary以便在表格上轻松突出错误.
在Microsoft Spain的N-Lyered应用程序中,他们使用IValidatableObject界面,最简单的属性验证放在实体本身,例如:
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var validationResults = new List<ValidationResult>();
if (String.IsNullOrWhiteSpace(this.FirstName))
validationResults.Add(new ValidationResult(Messages.validation_CustomerFirstNameCannotBeNull, new string[] { "FirstName" }));
return validationResults;
}
Run Code Online (Sandbox Code Playgroud)
在实体持久化之前,将调用Validate消息以确保属性有效:
void SaveCustomer(Customer customer)
{
var validator = EntityValidatorFactory.CreateValidator();
if (validator.IsValid(customer)) //if customer is valid
{
_customerRepository.Add(customer);
_customerRepository.UnitOfWork.Commit();
}
else
throw new ApplicationValidationErrorsException(validator.GetInvalidMessages<Customer>(customer));
}
Run Code Online (Sandbox Code Playgroud)
然后可以在MVC应用程序中捕获ApplicationValidationErrorsException,并且可以解析验证错误消息并将其插入到ModelStateDictionary.
我可以将所有验证逻辑添加到SaveCustomer方法中,例如,使用给定列(UNIQUE)查询数据库是否已存在客户.也许这没关系,但我宁愿validator.IsValid(或类似的东西)会为我做这个,或者在Infrastructure层再次执行验证(如果它属于这里,我不确定).
你怎么看?你怎么做呢?我非常有兴趣深入了解分层应用程序中的不同验证技术.
如果验证逻辑不能在表示层完成(如Iulian Margarintescu建议)并且需要在服务层完成,那么如何将验证错误传递到表示层?
微软在这里有一个建议(见清单5).您如何看待这种方法?
c# validation model-view-controller domain-driven-design repository
我试图让 EF Core 2 在没有指定外键的现有数据库上工作,并且“外键”和主键键可以为空。
在 上使用此属性映射Foo:
e.HasOne(x => x.User)
.WithMany()
.HasPrincipalKey(x => x.SID)
.HasForeignKey(x => x.UserId);
Run Code Online (Sandbox Code Playgroud)
其中主键和外键类型都是int?,因为User和 都User.SID被允许null。
这里奇怪的事情当然User.SID是允许的null,但不幸的是我无法纠正它。
EF 在查询集合时返回此异常:
SqlNullValueException: 数据为 Null。不能对 Null 值调用此方法或属性。
InvalidOperationException:读取属性“User.Id”的数据库值时发生异常。预期类型为“System.Nullable`1[System.Int32]”,但实际值为空。
有没有办法指定这个映射?
我可以通过忽略User属性并IQueryable像这样手动连接来做到这一点:
_dbContext.Foo
.Join(_db.Users,
kf => kf.UserId,
u => u.SID,
(foo, user) => new Foo { User = user })
Run Code Online (Sandbox Code Playgroud)
但我宁愿避免这种情况。
我一直在使用EF Code First CTP5和每个实体的专用映射类,如下所示:
public class UserMapping : EntityTypeConfiguration<User>
{
public UserMapping()
{
ToTable("Users");
HasKey(t => t.ID);
Property(t => t.ID).HasColumnName("user_id");
Property(t => t.Name).HasColumnName("name");
}
}
Run Code Online (Sandbox Code Playgroud)
并按照Jonas Cannehag描述的方式加载它们:http://areaofinterest.wordpress.com/2010/12/08/dynamically-load-entity-configurations-in-ef-codefirst-ctp5/
但这在RTM中不起作用,我无法弄清楚如何使用专用的映射类.你呢?:-)
在我的页面上,我得到了以下用户控件:
<div class="editFormDialog" style="display: none; font-size: 12px;">
<mm:Form ID="editUC" ShowCreateButton="false" ShowEditButton="true" runat="server" />
</div>
Run Code Online (Sandbox Code Playgroud)
这个UC有一个公共属性,它接受一个DataSet,并更新UC中的一些字段.
因此,当我按下我的页面上的按钮时,它会在UC上调用此属性,并且UC将使用DataSet中的数据进行更新.
到现在为止还挺好.当我希望UC成为jQuery UI对话框时出现问题.
首先我创建对话框:
$(document).ready(function() {
$('.editFormDialog').dialog({
autoOpen: false,
height: 700,
width: 780,
modal: true,
bgiframe: true,
title: 'Rediger',
open: function(type, data) {
$(this).parent().appendTo("form");
$(this).css('display', 'block');
}
});
});
Run Code Online (Sandbox Code Playgroud)
我不想在按钮上打开(这不是ASP.NET按钮,纯HTML):
$('#btnEdit').live('click', function() {
$('.editFormDialog').dialog('open');
});
Run Code Online (Sandbox Code Playgroud)
对话框打开,但UC不包含正确的数据.页面加载时,UC将使用默认数据进行更新.然后用户单击一个按钮,数据会发生变化但UC不会更新.它仍包含默认数据.那就是问题所在.
你知道为什么吗?
将非常感谢帮助!
我正在开发一个Sharepoint 2013加载项,我需要检索原始请求的查询字符串.
用户通过电子邮件链接到我们的加载项,我们需要提供一些上下文.请求加载项如下:https: //x.sharepoint.com/MyAddIn?p = 10
是否可以在我的加载项中检索p的值?
c# ×4
jquery ×2
wpf ×2
.net ×1
architecture ×1
asp.net ×1
code-first ×1
datepicker ×1
dbnull ×1
dialog ×1
onselect ×1
powershell ×1
repository ×1
sharepoint ×1
sql ×1
validation ×1
wcf ×1