NumberFormatInfo nfi = new NumberFormatInfo();
nfi.CurrencySymbol = "$";
var result1 = decimal.Parse("$123456", NumberStyles.Any, nfi).Dump(); // this works well
var result2 = Convert.ChangeType("$123456", typeof(decimal), nfi); // this doesn't work
Run Code Online (Sandbox Code Playgroud)
我需要 Convert.ChangeType() 来接受货币,这可能吗?尝试设置 NumberFormatInfo,但看起来它忽略了货币值。
据称它到处都调用了services.AddDbContext <>方法,但在ConfigureServices(IServiceCollection服务)方法中无法识别它.
我究竟做错了什么?
我需要测试我的控制器,它在最后一行做Response.Redirect().但在那一刻,Response对象为null.我需要做什么来进行单元测试呢?
我不使用NUnit或其他工具,但内置.
我正在创建一个可与Azure搜索服务一起使用的类。我希望它接受用于搜索文档的LINQ表达式,以便外部模块不知道Azure搜索语法。
有可以实现它的库吗?由于Azure搜索还很年轻,因此我无法在Internet上找到此类搜索。我发现的只是RedDog软件包,该软件包相当不错,但仍然需要字段名称和比较操作,因为某些日子字符串肯定会变得“神奇”。
好的,Azure搜索还接受OData格式的查询。我见过很少的OData查询到LINQ表达式解决方案,但没有一个相反。我需要一个可以将LINQ转换为OData字符串的库。
任何帮助表示赞赏。
我们的网络应用程序包含数十个部分视图,其中一些是其他人的孩子.我们注意到应用程序在第一次加载时变慢,需要0.5到1秒来初始化它第一次调用的每个视图.我追踪时间并发现了这个:
Html.RenderPartial("~/Full/Relative/Path/To/View.cshtml", null);
Run Code Online (Sandbox Code Playgroud)
即使视图绝对是空的,也可能需要大约1秒钟.同时这个:
var view = ViewEngines.Engines.FindPartialView(
ViewContext.Controller.ControllerContext, "~/Full/Relative/Path/To/View.cshtml");
Run Code Online (Sandbox Code Playgroud)
需要1毫秒,所以没有时间花在寻找文件上.
问题:
1.视图编译器花费这么长时间是正常的吗?
2.还有其他方法可以使第一次调用快速但没有在csproj中使用指令预编译视图吗?
ps:奇怪的是,在应用程序开发开始时,相同的视图加载速度更快.
我可能在某个地方犯了一个愚蠢的错误.我将非常感谢您的帮助.
我有一个带有单个可编辑字段的MVC3应用程序示例,该字段使用TextBoxFor方法显示给用户.在索引(POST)操作中,我更改了值,但它仍然保持不变.我究竟做错了什么?
我的代码:
型号:
public class TestModel
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
视图:
using (Html.BeginForm())
{
@Html.TextBoxFor(m => m.Name)
<input type="submit" />
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public ActionResult Index()
{
return View("Index", new TestModel() { Name = "Before post" });
}
[HttpPost]
public ActionResult Index(TestModel model)
{
model.Name = "After post";
return View("Index", model);
}
Run Code Online (Sandbox Code Playgroud)
如果我用TextBox或DisplayTextFor替换TextBoxFor,那么它可以正常工作.
我有一个StackLayout和一些里面的元素(按钮、文本等)。
我希望ActivityIndicator覆盖整个屏幕并使其无法对这些元素执行任何操作。
我已将ActivityIndicator放在StackLayout 中,但用 AbsoluteLayout 包装它,认为 AbsoluteLayout 可以轻松地重叠所有内容:
<StackLayout>
<AbsoluteLayout>
<ActivityIndicator ... />
</AbsoluteLayout>
<...other elements...>
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
相反,活动指示器显示在 StackLayout 的顶部,其他元素可用于影响。我是 Xamarin 和布局的新手,我做错了什么?互联网上的所有样本每页都有一个 ActivityIndicator...
我有带OnException处理程序的BaseController类.
public class ApiBaseController : Controller
{
protected override void OnException(ExceptionContext filterContext)
{
filterContext.Result = ...
filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
filterContext.ExceptionHandled = true;
}
}
Run Code Online (Sandbox Code Playgroud)
我继承的控制器在其操作上有自定义的HandleJsonError:
public class ApiCompanyController : ApiBaseController
{
[HttpPost, HandleJsonError]
public ActionResult Delete(int id)
{
// ...
if (...) throw new DependentEntitiesExistException(dependentEntities);
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
HandleJsonError是:
public class HandleJsonError : HandleErrorAttribute
{
public override void OnException(ExceptionContext exceptionContext)
{
// ...
exceptionContext.ExceptionHandled = true;
}
}
Run Code Online (Sandbox Code Playgroud)
当DependentEntitiesExistException异常上升时,将调用基本控制器和HandleJsonError的OnException处理程序.在HandleJsonError的OnException完成后,如何才能调用基本控制器OnException?
我具有Parent
与Child
彼此相关的实体,范围是1到M。我需要在单个SQL查询中与子代一起查询子代,但是该Include
方法在某些情况下无法正常工作。
这对表Parent
和Child
表都进行了正确的单个查询(通过JOIN):
var r1 =
ctx.Set<Parent>()
.Include(p => p.Childs)
.Where(p => p.Id == 1)
.ToList();
Run Code Online (Sandbox Code Playgroud)
一旦我快速创建了一个匿名对象,孩子就会迷路,SQL仅包含Parent的字段。检索孩子仍然很懒-他们仍未加载:
var r2 =
ctx.Set<Parent>()
.Include(p => p.Childs)
.Where(p => p.Id == 2)
.Select(p => new { myParent = p})
.ToList();
Run Code Online (Sandbox Code Playgroud)
问题:
PS我想保持父级的Childs属性为虚拟。
我一直在考虑分离读取和写入流,甚至让它们使用不同的数据库,通过水平扩展“读取”数据库来提供最佳的快速数据可用性。我要将我的项目写入数据库,将对象更改通知推送到队列中,以便另一个服务读取消息并将更新的数据复制到一个或多个非规范化的“读取”数据库。考虑到这一点,我发现如果“写入”数据库也被非规范化,这将是糟糕的。
示例:假设有一个名为大学用户的用户配置文件已经毕业。假设我将此信息存储在“写入”数据库中,如下所示:
{ userId: 100, name: "John", universityId: 200, universityName: "Cambridge"}
Run Code Online (Sandbox Code Playgroud)
假设用户打开了他的个人资料进行编辑,当他在编辑时,另一个人(剑桥代表)已将名称从“剑桥”更改为“CU”并保存更改,因此它们同时进入“写入”和“读取”数据库。更新大学名称的服务结束了,现在"想"大学到处都OK。在这一刻之后,第一个用户用旧的大学名称保存更新的个人资料,这个名字将出现在他的个人资料出现的每个地方。
这类问题让我觉得“写”数据库必须始终规范化,不能包含重复项。但是我从来没有从关于 CQRS 的文章中找到这个原则。我想错了吗?
.net ×7
c# ×4
asp.net-mvc ×3
linq ×2
asp.net-core ×1
azure ×1
cqrs ×1
image ×1
mongodb ×1
odata ×1
razor ×1
sql-server ×1
testing ×1
tiff ×1
unit-testing ×1
xamarin ×1