小编Pet*_*ron的帖子

ASP.NET MVC 4移动显示模式停止工作

尽管浏览器覆盖正确检测到被覆盖的移动设备,但ASP.NET MVC 4中的移动显示模式在大约一小时的正常运行时间后停止提供正确的视图.

回收应用程序池暂时解决了这个问题.

新的浏览器覆盖功能正确地允许移动设备查看站点的桌面版本,反之亦然.但经过大约一个小时的正常运行时间后,移动设备不再呈现移动视图; 仅呈现默认桌面Razor模板.唯一的解决方法是回收应用程序池.

奇怪的是,浏览器覆盖cookie继续运行.主_Layout.cshtml模板正确显示"移动"或"桌面"文本,具体取决于值ViewContext.HttpContext.GetOverriddenBrowser().IsMobileDevice,但仍会呈现错误的视图.这让我相信问题在于DisplayModes.

有问题的行动没有被缓存:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
Run Code Online (Sandbox Code Playgroud)

我使用51Degrees进行移动检测,但我不认为这会影响被覆盖的移动检测.这是DisplayModesASP.NET MVC 4 Beta和开发人员预览的功能中的错误,还是我做错了什么?


这是我的DisplayModes设置Application_Start:

DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("iPhone")
{
    ContextCondition = context =>
        context.GetOverriddenBrowser().IsMobileDevice
        && (context.Request.UserAgent.IndexOf("iPhone", StringComparison.OrdinalIgnoreCase) >= 0
        || context.Request.UserAgent.IndexOf("Android", StringComparison.OrdinalIgnoreCase) >= 0
        || !context.Request.Browser.IsMobileDevice)
    });

/*  Looks complicated, but renders Home.iPhone.cshtml if the overriding browser is
    mobile or if the "real" browser is on an iPhone or Android. This falls through …
Run Code Online (Sandbox Code Playgroud)

browser asp.net-mvc mobile overriding asp.net-mvc-4

28
推荐指数
2
解决办法
1万
查看次数

为什么使用common-lookup表来限制实体的状态错误?

根据Anith Sen 应该避免五个简单数据库设计错误,使用通用查找表来存储实体的可能状态是一个常见的错误.

编辑+答案: Anith文章中的数字没有很好的标注 - 我认为图1图2都是糟糕设计的例子,而图2是好的设计.P,在那里担心了一会儿.

综上所述:

  • 查找表:.
  • 通用查找表:不好.

我将在下面提出我的问题以供参考.


给出以下原因:

  1. "你失去了确保准确数据的手段;约束.通过将不同的实体组合到一个表中,你没有声明方法来约束某个类别的值."
    限制价值如何失去准确性?

  2. "您必须将每种数据类型表示为具有此类通用查找表的字符串."
    如果我想表示另一种数据类型,我可以在其查找表中添加一列.

  3. "你致力于坚强和随后的复杂性."
    怎么样?

  4. 第四,也是最后,您面临着物理实现问题.
    我不明白为什么.

我不同意给出的大多数理由,并希望对我的错误进行一些客观的批评?逻辑.

我的例子:

引用维修服务中的工作示例,其中包含许多可能具有自然流动的可能状态,让我们采取一个JobStatus表格:

  1. 预订
  2. 分配给技师
  3. 诊断问题
  4. 等待客户确认
  5. 修理并准备好接送
  6. 修理和Couriered
  7. 无法弥补并准备好接送
  8. 引用被拒绝

可以说,这些状态中的一些可以标准化为表格Couriered Items,Completed Jobs并且Quotes(具有待定/接受/拒绝状态),但这感觉就像不必要的模式复杂化.

另一个常见示例是OrderStatus限制订单状态的表:

  1. 有待
  2. 已完成
  3. 取消
  4. 退款

状态标题和描述在一个地方进行编辑,并且易于作为带有外键的下拉列表用于动态数据应用程序.这对我来说过去很有用.如果业务规则规定了新订单状态的创建,我可以将其添加到OrderStatus表中,而无需重建我的代码.

为什么这是一个不好的做法?


编辑:我在我的问题中加入了Anith的理由,并试图保持客观.

-

database-design

23
推荐指数
2
解决办法
9989
查看次数

开票与报价或估算

如果发票可以无效,是否应将它们用作报价单?

我有一个Invoices表是从与Job或相关联的库存创建的Order.我可以将一张Quotes桌子作为库存和发票之间的中间位置,但感觉我会有重复的数据结构和逻辑来处理"这是一个引用吗?" 位.

从商业角度来看,报价从不同的发票:报价之前承诺发送和发送发票,一旦完成,付款到期,但如何在我的资料库和模型来表示这一点.

  • 在数据库中存储和管理报价和发票的优雅方式是什么?

编辑:对于此特定实例,指示Job=== Order.

database-design invoice quoting

22
推荐指数
3
解决办法
2929
查看次数

我在哪里可以找到TableDiff.exe?

我刚刚在隐藏的功能问题上找到了关于SQL Server的TableDiff工具,并且有一个完整的nerdgasm.我想下载该工具,但我看到的任何地方都被告知要查看C:\Program Files\Microsoft SQL Server\90\COM\TableDiff.exe.在我的PC上查找无处不在(我安装了SQL Server 2008 Express和SQL Server 2008)之后,我找不到它.

哪里可以单独下载TableDiff.exe工具?

GUI工具是不是我要找的机器人.

sql-server

21
推荐指数
2
解决办法
2万
查看次数

RegEx为有效的国际手机号码

我使用Clickatell向客户的手机发送短信.

所有有效的手机号码都有标准化的正则表达式,例如+27 123 4567吗?我会自己动手,但我担心会错过一个模糊的,有效的电话号码格式.

regex validation phone-number clickatell

21
推荐指数
2
解决办法
10万
查看次数

可空的bool作为C#中的三态变量

使用可空的bool存储三态值是否有任何优点?例如,null == 1st state, false == 2nd state, true == 3rd state

开销可能高于使用字节枚举,但我很好奇.

c# state boolean

20
推荐指数
4
解决办法
2万
查看次数

用于代码编辑的眼动追踪

是否有一个像样的眼动追踪替换鼠标进行代码编辑

我想释放鼠标,但继续使用键盘编辑代码.

在做了一些研究之后,我得出结论,适当的眼动追踪硬件很昂贵.使用网络摄像头或高分辨率摄像机似乎是最可行的选择.

遗憾的是,基于图像的跟踪(与红外线跟踪相反)限制了准确性,因此并非所有功能都可行.

所需的眼动追踪IDE功能:

  • 页面滚动
  • 标签选择
  • 设置光标位置
  • 使用键盘选择以注视为中心的文本

一个类似的问题建议Opengazer的摄像头,但我在加快基本的文本编辑特别感兴趣.任何建议都表示赞赏,特别是如果您有眼动追踪和实际使用案例的经验.

mouse usability typing human-computer-interface eye-tracking

19
推荐指数
1
解决办法
4417
查看次数

ViewBag.Title值覆盖ASP.NET MVC编辑器模板的Model.Title

当我设置ViewBag.Title在Razor模板的顶部时,将Model.Title使用值ViewBag.Title而不是期望值填充编辑器模板文本框Model.Title.Html.EditorFor(x => Model.Title)显式调用不会产生此行为.

如何在ViewBag.Title不维护模型的自定义编辑器模板的情况下阻止编辑器模板显示值?

@{
    ViewBag.Title = "Edit Post " + Model.Title;
}

@Html.EditorFor(x => Model.Title) @* renders "My Title" text box *@
@Html.EditorFor(x => Model)       @* renders "Edit Post My Title" text box *@
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc mvc-editor-templates editorformodel viewbag

17
推荐指数
2
解决办法
3268
查看次数

对多租户,或不对多租户

我有一个困难的数据库设计决策,为我的客户基于网络的CRM的越来越多的分支机构提供多租户,我积极维护.

我很早就决定为每个分支使用单独的应用程序和单独的数据库,因为这是满足不同数据和代码要求的三个不同分支的最简单方法.我还想避免在每个查询中管理租户ID ,就像我在2007年建立的遗留经典ASP(cringe)应用程序一样......恐怖.

但现在分支机构的数据需求正在趋同,随着业务的扩展,我需要能够快速推出新的分支机构并共享全球产品SKU.

由于所有分支的表和视图都相同,并且现在可以使用更好的ORM工具来管理多租户应用程序,我想知道为多个分支创建共享数据库是否更好.

注意事项对于一个集中的数据库:

  • 全球产品SKU
  • 简化的库存申请
  • 更容易备份
  • 部署一次而不是每个分支

针对集中式数据库的注意事项:

  • 使用单独的DB更容易区分分支需求
  • 模块化部署(一个被击落的分支不会破坏所有)
  • 更难以管理和开发共享数据库
  • 我必须重新设计发票编号(由种子生成的序列)
  • 到处都是WHERE条款
  • 恢复一个破碎的分支对其他分支有很多影响

不太可能有多达10个分支机构.现在有3个.

在这方面具有实际经验的开发人员,您在我的情况下会做些什么?将应用程序和数据库分开,还是组合成一个巨大的系统?


编辑:伟大的微软的文章在多租户亲的利弊.我应该注意,分支之间的数据隔离不是主要问题.

sql-server asp.net database-design fluent-nhibernate multi-tenant

16
推荐指数
2
解决办法
3556
查看次数

部署的ASP.NET MVC 4项目将无法运行

我在我的测试服务器上部署了一个ASP.NET MVC 4项目,但它似乎没有运行.

部署后尝试访问IIS 7上的项目URL会尝试列出目录内容.检查文件夹显示已部署所有程序集.启用目录浏览实际上列出了目录中的文件,并且可以提供静态文件.

就好像我的.NET 4.0应用程序池没有将任何请求路由到控制器.

可能是什么导致了这个?

deployment asp.net-mvc asp.net-mvc-4

16
推荐指数
1
解决办法
1万
查看次数