我花了一整天的时间,我现在很秃头.
控制器:
[HttpPost]
public HttpResponseMessage AddSet(SetDto set)
[HttpPost]
[ActionName("copy")]
public HttpResponseMessage CopySet([FromUri]int[] ids)
Run Code Online (Sandbox Code Playgroud)
路线顺序:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
routes.MapHttpRoute(
name: "Set",
routeTemplate: "api/set/{id}",
defaults: new { controller = "set", id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
我打电话copy用POST /api/set/copt/ids,并add用POST /api/set.我究竟做错了什么?
完整错误:
"exceptionMessage":"在App.Service.Controllers.SetController\r \nSystem类型上找到了与请求匹配的多个操作:\ r \nSystem.Net.Http.HttpResponseMessage AddSet(App.Repository.Models.Dtos.SetDto). Net.Http.HttpResponseMessage
App.Service.Controllers.SetController类型上的CopySet(Int32 [])",
我使用DurandalJS构建了一个应用程序 - 虽然我不知道框架是否与此相关.在Firefox和Chrome中,如果我点击深蓝色框(文件夹),性能会迅速降低,我不知道为什么.我点击的每个新文件夹都需要更长时间才能打开 - 我可以看到它在打开大约20-30个文件夹后发生.
这些文件夹没有被缓存,应该基于单例viewModel:
define(['services/dataservice', 'durandal/plugins/router', 'durandal/app', 'services/hub', 'viewmodels/setVm', 'viewmodels/folderVm'],
function (dataservice, router, app, hub, SetViewModel, FolderViewModel) {
// define vm
return vm;
}
Run Code Online (Sandbox Code Playgroud)
在FF分析器中,我看到这样的事情:

我不确定这对于那些更熟悉分析的人是否有意义,但我不能为我的生活找出为什么会出现这种性能下降.
chrome中的内存配置文件显示最大内存消耗约为45 MB,但是我必须等待页面绘制的时间确实会逐渐变得更糟.
现场网站在这里:
知道为什么会这样吗?
我正在启动MVC,我理解模型和ViewModels之间的区别,感谢这篇文章:
http://rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applications
然而,我向同事展示了这一点,现在我觉得这是使用knockout将视图绑定到模型的替代方法.有人可以解释一下吗?敲除绑定是否与定义具有属性的ViewModel类相同?
谢谢!
model-view-controller asp.net-mvc viewmodel asp.net-mvc-3 knockout.js
我的shell有按钮,只有当用户当前正在查看某个viewModel时才应显示这些按钮.如何确定视图当前是否从shell"处于活动状态"?
我发现这篇文章:
但是这意味着为了在样本中接近真正的随机性,我必须迭代所有元素,用随机数将它们抛入内存,然后排序.我这里有一大堆物品(数百万) - 有没有更有效的方法解决这个问题?
我的MVC视图中有以下内容:
$(document).ready(ko.applyBindings(new ProfileVm(@Html.Raw(Json.Encode(Model)))));
Run Code Online (Sandbox Code Playgroud)
这很好用,除了所有的键Model都用大写的第一个字母编码.如何从视图中调用camelCase解析器?或者有没有办法告诉Json.Encode使用小写分辨率?
我正在尝试查询用户,包括每个用户的兴趣,但仅限于兴趣符合特定条件的情况:
return db.Users.Include(u => u.Interests.Where(s => s.TenantId == tenantId))
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
Include路径表达式必须引用在类型上定义的导航属性.使用虚线路径作为参考导航属性,使用Select运算符作为集合导航属性.
我玩的想法是把外面的东西推到外面,但却无法让它发挥作用.
在TPH继承中,这有什么区别:
context.Firms.OfType<RedFirm>()
Run Code Online (Sandbox Code Playgroud)
和这个:
context.Firms.Where(item => item is RedFirm);
Run Code Online (Sandbox Code Playgroud)
在性能方面?
我在视图中有以下代码:
@foreach (var parent in Model.Parents)
{
@foreach (var child in parent.Children)
{
@Html.TextAreaFor(c => child.name)
}
}
Run Code Online (Sandbox Code Playgroud)
表单中的其他textareas保存正常,但在提交表单时,我的控制器中的POST方法获取一个带有null父字段的viewModel.知道为什么吗?
我有一个HashSet<string>约5万名会员.我有另一个对象列表,我一个接一个地迭代,以确定对象的电子邮件是否存在.如果是,我需要对该对象执行一些操作.
var emailList = db.Emails.Select(s => s.EmailAddress.ToLower()).ToList();
var emailHash = new HashSet<string>(emailList);
var objects = db.Objects.ToList();
// everything is fine up to this point
foreach (var object in objects) {
if (!emailHash.Any(s => s.Equals(object.Email))) { // This takes ~0.3s
Console.WriteLine("Email: {0}", object.Email);
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能加快评估字符串列表中是否存在一个字符串?
c# ×5
asp.net-mvc ×4
.net ×2
durandal ×2
knockout.js ×2
linq ×2
algorithm ×1
asp.net ×1
c#-4.0 ×1
performance ×1
razor ×1
routing ×1
viewmodel ×1