我正在为Json.NET编写一个JsonConverter,它允许我将任何枚举转换为由[Description]属性定义的字符串值.
例如:
public enum MyEnum {
[Description("Sunday")] Sunday,
[Description("Monday")] Monday,
[Description("Tuesday")] Tuesday,
[Description("Wednesday")] Wednesday,
[Description("Thursday")] Thursday,
[Description("Friday")] Friday,
[Description("Saturday")] Saturday
}
Run Code Online (Sandbox Code Playgroud)
我已经有了支持代码,myEnum.Description()显然会返回其字符串描述.
在JsonConverter实现中,有这样的方法:
public override bool CanConvert(Type objectType)
{
}
Run Code Online (Sandbox Code Playgroud)
我试图找出如何确定是否objectType是一个Enum并返回true,以便转换器知道它可以转换此对象.由于我有很多Enum,我无法明确检查每一个,所以我希望有一个更通用的方法来实现这一点.
是否可以通过在单个更新文档中传递两个$ inc运算符来更新单个文档?
例如,我尝试使用以下更新文档增加给定文档中的两个不同字段:
{
"$inc" : { "ViewAggregates.4d75b891842f2d3930cf7674" : 1 },
"$inc" : { "ViewAggregates.Total" : 1 }
}
Run Code Online (Sandbox Code Playgroud)
不会抛出任何错误并且文档已更新,但只有一个字段已递增.就好像服务器忽略了第一个$ inc运算符,只有第二个实际应用了.
这是正确的\正确的行为还是我缺少的东西?
我正在尝试执行一个由两个$or人组成的查询:
|--------------------
| Date1 | Date2 |
|--------------------
| NULL | NULL | *
| NULL | TODAY | *
| NULL | TOMRW |
| TODAY | TODAY | *
| TODAY | NULL | *
| TOMRW | NULL |
|--------------------
Run Code Online (Sandbox Code Playgroud)
(我已经标记了与星号相匹配的行)
(Date1 == null || Date1 <= today) && (Date2 == null || Date2 <= today)
Run Code Online (Sandbox Code Playgroud)
我不确定如何在MongoDB中表达此查询.
它可以分解为两个单独的查询,完全按照它们的要求:
{
"$or": [{
"Date1": {
"$exists": false
}
},
{
"Date1": {
"$exists": true,
"$lte": new Date("2012-01-07T04:45:52.057Z") …Run Code Online (Sandbox Code Playgroud) 在ASP.NET Web站点项目中,我总是能够对底层C#代码进行更改,只需在浏览器中刷新页面,我的更改就会立即生效.
在使用Java和Eclipse时,我可以做同样的事情 - 编辑我的Java源代码并刷新页面,我的更改就在那里.
我不能在ASP.NET MVC中这样做,这是一个真正的下降 - 我必须停止运行进程并进行更改,然后重新启动调试.这是浪费大量时间.
我做错了吗?ASP.NET MVC开发的最佳方法是什么?
我的任务是设计一个系统,允许我们的用户登录他们的帐户并使用他们的手机与我们的服务进行交互.我担心应用程序的安全性.
基本上,我们允许人们使用Facebook或Twitter通过OAuth登录.移动应用程序(使用Appcelerator钛构建)也应该这样做.成功登录手机后,我需要通知我的应用程序有人用FB或Twitter登录,以便我的应用程序可以检索用户的应用程序特定的用户ID.
我的第一个想法是编写一个手机可以调用的API,可以接受Facebook或Twitter userId等参数.我会查询我的数据库并找到他们的内部用户ID并将其返回到手机.
这样可以正常工作,但它完全不安全.任何人都可以使用Facebook用户ID访问相同的API,并且API只会返回内部ID(以及应用程序所需的任何其他数据),而不知道请求是否已获得授权.
这是我的第一个移动应用程序,所以我不太确定在我的API上实现安全性的正确方法.
我讨厌ASP.NET html帮助程序在与POCO属性相同的情况下生成名称和id属性.
大多数开发人员通常使用名称和id的小写值,但我似乎无法在ASP.NET MVC中找到实现此目的的方法.
通过源代码查看显示无法覆盖此功能,但我可能错了.
这是可能吗?
编辑:我会更具体,我正在谈论的例子,因为似乎有一些混乱.
我的模型看起来像这样:
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我像这样使用Html herlpers:
@Html.InputFor(m => m.FirstName)
Run Code Online (Sandbox Code Playgroud)
这会生成如下所示的标记:
<input type="text" name="FirstName" id="FirstName" value="" />
Run Code Online (Sandbox Code Playgroud)
我讨厌FirstName属性大写.在一个完美的世界中,我想要一种方法来覆盖这个属性值的生成,这样我就可以让它说"firstName".
我不想将POCO属性名称更改为小写.ASP.NET MVC框架的大部分内容都是可扩展和可定制的 - 这不是吗?
有没有办法迫使蜘蛛减慢其网站的蜘蛛?什么东西可以放在标题或robots.txt?
我以为我记得读过一些关于这是可能的事情,但现在找不到任何东西.
我正在评估Geddy MVC框架node.js,我看到一个奇怪的问题 - 我的断点在调试时都没有被击中.
我正在使用WebStorm以node.js调试模式启动.
我不知道如何使用CLI命令让Geddy以调试模式启动,所以我使用的bootstrapper文件如下所示:
console.log("Starting server...")
var geddy = require("geddy/bin/cli")
console.log("Server started.")
Run Code Online (Sandbox Code Playgroud)
我在所有三行上都设置了一个断点,只有最后一个console.log被击中,所以至少我知道断点和调试工作正常.
Geddy内部require()的我的控制员也在几个地方设置了断点.这些永远不会受到影响,但控制器可以正常工作,并且HTTP请求也可以正常提供.
有没有理由为什么断点不会被Geddy击中?还有什么我可以做的吗?
我是EF和Ninject的新手,请原谅我,如果这没有意义:)
我有一个带有Ninject和Ninject.Web.Common引用的MVC3应用程序.我正在尝试将DbContext注入我的存储库.我所看到的是,在第一次请求时,一切都运行良好,但后续请求返回:
System.InvalidOperationException: The operation cannot be completed because the DbContext has been disposed.
at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
at System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression)
at System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source, Expression`1 predicate)
Run Code Online (Sandbox Code Playgroud)
我的绑定:
kernel.Bind<ISiteDataContext>().To<SiteDataContext>().InRequestScope();
kernel.Bind<IProductRepository>().To<ProductRepository>();
kernel.Bind<IProductService>().To<ProductService>();
Run Code Online (Sandbox Code Playgroud)
我的服务类:
public class ProductService : IProductService {
[Inject]
public IProductRepository repository {get; set;}
...
}
Run Code Online (Sandbox Code Playgroud)
我的存储库类:
public class ProductRepository : IProductRepository {
[Inject]
public ISiteDataContext context {get; set;}
...
}
Run Code Online (Sandbox Code Playgroud)
我的SiteDataContext类:
public class SiteDataContext : DbContext, ISiteDataContext
{
static SiteDataContext()
{
Database.SetInitializer<SiteDataContext >(null);
}
public DbSet<Product> Products{ get; set; }
protected override …Run Code Online (Sandbox Code Playgroud) 我用几个动作过滤器装饰了我的基本控制器.他们工作正常.
其中一个过滤器设置了请求 - 例如根据域设置文化等.
我还有一些需要使用Authorize属性进行授权的操作.
我的问题是,当用户尝试请求他们无权访问的页面时,授权过滤器会启动并将其重定向到一个页面,告诉他们他们无法访问该页面.
问题是动作过滤器从不运行,因此永远不会设置文化和其他请求数据.这有效地导致视图中的语言错误并且缺少其他数据.
我知道授权过滤器首先运行,但我的问题是:我如何设计这样,以便我可以确保在返回视图之前始终运行某些方法,无论授权如何.
希望有道理.
c# asp.net asp.net-mvc asp.net-membership asp.net-authorization
asp.net-mvc ×3
c# ×3
mongodb ×2
.net ×1
api ×1
appcelerator ×1
asp.net ×1
debugging ×1
enums ×1
geddy ×1
mobile ×1
ninject ×1
node.js ×1
performance ×1
security ×1
titanium ×1
web-crawler ×1
webserver ×1
webstorm ×1