我有一个函数,它使得ajax GET请求和基于返回的值设置一个全局JS变量.我使用这个变量(下面的代码中的isCalculateTax)进行进一步处理:
var isCalculateTax;
function setCalculateTaxValue(taxStatementId) {
$.get('/taxstatements/calculatetax/' + taxStatementId, function (data) {
isCalculateTax = data.isCalculateTax;
});
}
$(document).ready(function () {
// initially check the tax statements dropdown to see which one is selected
// and set the isCalculateTax to the right value
var taxStatementId = $('#taxStatements').val();
setCalculateTaxValue(taxStatementId);
enumerateDocumentItems(isCalculateTax);
});
Run Code Online (Sandbox Code Playgroud)
我的问题是,当enumerateDocumentItems()被调用并执行时,isCalculateTax尚未从AJAX GET请求更新,因此我收到了不可预测的结果.
如何在执行enumerateDocumentItems()之前等待必要的时间,以便isCalculateTax正确?
为什么double.TryParse()这些设置不会解析
double.TryParse("1.035,00",
NumberStyles.AllowCurrencySymbol | NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite |
NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign,
GlobalSettings.Instance.DefaultCulture, out price);
Run Code Online (Sandbox Code Playgroud)
其中DefaultCulture是sl-SI(斯洛文尼亚语),其中点.为数字分组符号,并为小数点.该price遗骸0的解析之后.
?
我有一个关于一般DVCS的问题,包括Git和Hg.
在Git和Hg中,合并跟踪是在"提交"级别而不是"文件/目录"级别完成的.
其中一个"副作用"是您不能轻易进行"部分合并":
使用"基于项目的合并跟踪"(Perforce,ClearCase,Plastic SCM <= 3.0),您可以选择要合并的几个文件,然后签入,然后重复合并,将显示待处理文件.
使用Hg,Git:一旦你合并(有方法保存文件而不合并),设置"跟踪",如果你重复合并,则不会留下合并的候选者.
我的问题是你对此感觉如何?
是否存在您认为"部分合并"是强制性的情况?你可以没有它吗?(与commit/cset级别跟踪合并要快得多).
免责声明:我为Plastic SCM工作,我们已经转向4.0中的"cset"级别跟踪,但我们想知道保持"项目级别合并跟踪"或者两者兼而有之是不是一个好主意.
DataContractSerializer如果字段不在"正确"(无论是什么意思)顺序中,是否可能错误地反序列化对象?
我尝试序列化/反序列化的类没有在字段/属性上放置顺序属性.然而,我的一个字段总是被反序列化,null即使它具有非空值(它实际上包含字符串列表).
当我在序列化文件中移动两个XML元素以匹配另一个XML示例中的顺序时(反序列化工作没有问题)一切都开始工作.
这对我没有意义,但也许有人知道的更好.;)
.net c# serialization xml-serialization datacontractserializer
我正在将Dictionary序列化为XML.当我创建一个新的字典时,我使用构造函数来提供没有外壳的EqualityComparer
var tabs = new Dictionary<string,Tab>(StringComparer.OrdinalIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
然后我序列化为XML,当我反序列化有关套管的信息丢失时 - 使用GenericEqualityComparer对字典进行反序列化,这显然是区分大小写的,因为如果它们没有正确套装,它就找不到我的密钥.
任何想法我怎样才能改变它?
一种方法是创建一个新的字典并将数据从反序列化复制到新的字典,但这似乎很麻烦.
更新:
反序列化一直在工作,只是它将序列化的字典序列化为不使用不区分大小写的键的字典.
我EditorFor()在我的视图中使用帮助器来渲染编辑模板,我想调用DisplayFor()内部的这个模板来渲染显示模板.
像这样
这是在/Shared/EditorTemplates/Client.ascx中
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BusinessNext.Models.Ef.Client>" %>
<%: Html.DisplayFor(client=>client) %>
Run Code Online (Sandbox Code Playgroud)
在DisplayFor模板中,我渲染出客户端的属性.DisplayFor模板在从其他地方调用时工作得很好,但是从EditorFor模板调用它不会渲染任何东西.似乎DisplayFor()调用从未真正进入DisplayFor模板.
这是一个SetCulture属性的例子,里面做了这样的事情:
public void OnActionExecuting(ActionExecutingContext
filterContext)
{
string cultureCode = SetCurrentLanguage(filterContext);
if (string.IsNullOrEmpty(cultureCode)) return;
HttpContext.Current.Response.Cookies.Add(
new HttpCookie("Culture", cultureCode)
{
HttpOnly = true,
Expires = DateTime.Now.AddYears(100)
}
);
filterContext.HttpContext.Session["Culture"] = cultureCode;
CultureInfo culture = new CultureInfo(cultureCode);
System.Threading.Thread.CurrentThread.CurrentCulture =
culture;
System.Threading.Thread.CurrentThread.CurrentUICulture =
culture;
}
Run Code Online (Sandbox Code Playgroud)
我想知道这对多个用户登录的网站有何影响,每个用户都设置了自己的文化?什么是范围在这里线程与问候到IIS工作进程(W3WP),该网站在运行?
我在SO处找到了许多解决方案,而且是通过序列化/反序列化(进入内存和后退)来处理对象的深层克隆.
它要求克隆的类标记为[Serializable].我碰巧把我的类(大部分都是)标记为[DataContract]因为我使用DataContractSerializer序列化为XML.
我只介绍了[Serializable]属性,因为需要对其中一些类实例进行深度克隆.但是,现在通过DCS进行序列化/反序列化的事情发生了,因为它不再起作用了 - 关于在反序列化时期望不同的XML元素的错误.如果我删除了[Serializable]错误消失了.
我有什么选择?我只想尽可能简单地深入克隆我的对象.
我正在使用Nuget MVC3集成软件包用于Autofac和MVC4.它主要工作(使用Controllers的构造函数注入很好)但它不会将注册服务注入动作过滤器属性.
这是我在Global.asax.cs中的注册:
builder.RegisterType<AspNetMembershipProviderWrapper>().As(typeof(IUserService)).InstancePerHttpRequest();
// 5) action filters
builder.RegisterType<SetCultureAttribute>().As<IActionFilter>().PropertiesAutowired().SingleInstance();
builder.RegisterFilterProvider();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
Run Code Online (Sandbox Code Playgroud)
然后在SetCultureAttribute我有这个:
public IUserService _userService { get; set; } // it doesn't get injected, null
Run Code Online (Sandbox Code Playgroud)
这也不适用于属性的构造函数:
_userService = DependencyResolver.Current.GetService<AspNetMembershipProviderWrapper>(); // always returns null
Run Code Online (Sandbox Code Playgroud)
DependencyResolver.Current.GetService() 当在动作过滤器的构造函数中调用时,也为所有其他注册服务返回null(我在Debug窗口中尝试了它来测试它).
所以我觉得有些事情不对.是否可以使用MVC3集成或者我应该使用MVC4 Nuget包(它说它是用于RC)?
还有什么我可以尝试使这项工作?
在使用Visual Studio Code时,如何将新的基于csproj的项目的Nuget包更新为最新的?
这是我在.csproj文件中的内容:
<PackageReference Include="Microsoft.AspNetCore" Version="1.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.0.2" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.0.1" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.0.0" />
Run Code Online (Sandbox Code Playgroud)
如果我这样做dotnet restore只会安装指定的软件包版本.
没有dotnet restore update或没有dotnet nuget update选择.
所有上述引用的Microsoft.AspNetCore.*软件包都有更新的版本(1.1.0).
我想更新软件包并自动更新引用,就像在Visual Studio中一样.
c# ×4
asp.net-mvc ×2
.net ×1
.net-4.0 ×1
.net-core ×1
autofac ×1
clone ×1
dictionary ×1
dvcs ×1
git ×1
iis ×1
iis-7 ×1
javascript ×1
jquery ×1
mercurial ×1
nuget ×1
parsing ×1
plasticscm ×1