问题标签 [nerddinner]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - 我应该如何在 ASP.NET MVC 中命名我的模型?对书呆子晚餐感到困惑
我正在学习 ASP.NET MVC,我喜欢它。但是,我对为模型命名空间的正确方法感到非常困惑。
在剖析 NerdDinner 示例应用程序时,我注意到 Models 文件夹中的所有内容都属于 Models 命名空间。数据映射类、存储库、错误规则管理等属于同一个命名空间级别。
我知道这个文件夹的灵感来自于 Rails 和朋友等框架,并且需要证明 MVC 标题中的 M 是正确的,但是;自动模型命名空间不会破坏编写可跨不同系统和实现可拆卸和可移植的业务逻辑的任何机会吗?
我应该在此模型命名空间下命名我的业务逻辑,还是应该完全忽略它并以更独立于框架的方式对我的类进行分类?
是否有任何复杂而优秀的 ASP.NET MVC 示例应用程序可以证明这一点?
model-view-controller - 简单的 MVC NerdDinners Lambda
在 Microsoft 的 MVC 教程 NerdDinners 的这段代码中:
公共类 DinnerRepository {
}
有什么作用:
“d”是什么意思?这段代码是如何工作的?我知道它会带回与函数参数中的 id 匹配的晚餐。我不明白“d 去...”的意思。我知道这是一个 lambda,但我真的不明白。“d”是干什么用的?它有什么作用?
这是否可以在没有 lambda 的情况下编写(如何)?
asp.net-mvc - 书呆子晚餐控制器
在本页面:
http://nerddinnerbook.s3.amazonaws.com/Part4.htm
添加控制器后,我可以浏览http://localhost:xxxx/dinners
并按预期工作。我的问题是它怎么知道使用“晚餐”?“晚餐”在哪里?我的控制器被命名为 DinnersController,所以 Dinners 这个词是如何变得有意义的。我在我的 Linq to SQL 或其他任何地方都没有看到它。我确定我忽略了一些明显的东西。
这是代码:
晚餐"); }
" + id + ""); }
“晚饭”从何而来?
感谢您的任何帮助。
编辑:在发布并看到 global.asax 之前,我在文章中进一步阅读,但我不明白它是如何映射到晚餐的:
validation - 书呆子晚餐验证规则问题
在 NerdDinner 教程的 Step 5中,在Complete Edit Action Method Implementations下的中间有一段:
我们的 Edit 实现的好处是,我们的 Controller 类和 View 模板都不需要知道关于晚餐模型强制执行的特定验证或业务规则的任何信息。我们可以在未来向我们的模型添加额外的规则,并且不必为了支持它们而对我们的控制器或视图进行任何代码更改。这使我们能够灵活地在未来通过最少的代码更改轻松地发展我们的应用程序需求。
我的问题是可以添加什么样的规则,并且以这样一种方式,我不会失去我的干净分离。我可以看到这段代码:
比这段代码更好:
因为我没有特定的类/模型信息并且可以在整个应用程序中使用它。而且,如果我的错误处理像上面这样简单,我可以看到这有多好,但是我看不到如何为新的业务规则添加更复杂的东西,并希望有一个例子。
asp.net-mvc - 什么是 ModelState.IsValid 在 NerdDinner 的 ASP.NET MVC 中有效?
在Professional ASP.NET MVC 1.0的NerdDinner示例中,有一种方法可以创建一个新的晚餐,复制如下(免费的 NerdDinner 版本的第 89 页)。
它在那里检查 ModelState.IsValid 是否为真。它似乎检查模型是否对数据库有效(也就是说,它捕获数据类型转换,例如格式无效的日期,但不是业务规则)。真的吗?
提交表单时,如果您在日期中有错误,ModelState.IsValid 将为 false,您将返回错误,但仅针对该日期,因为从未执行过 AddRuleViolations。如果您完全删除对 ModelState.IsValid 的检查,那么您将收到所有错误(由于异常),包括无效日期中的标记。那么,为什么要检查 ModelState.IsValid 呢?我错过了什么吗?
asp.net-mvc - 如何在 ASP.NET MVC 上的规则违规中获得数据库验证?
在NerdDinner示例中,编写了一组业务规则来验证模型上的数据。检查空字符串之类的内容,并通过调用 modelObject.GetRuleViolations() 来获取所有内容。但是还有另一层验证是数据库。例如,将 datetime 字段留给数据库进行验证,它只接受可以转换为 DateTime 对象的字符串。
我看到的问题是 modelObject.GetRuleViolations() 永远不会返回日期时间的违规行为。因此,即使正确阻止了保存记录并显示表单,指定存在错误并突出显示日期时间字段,也没有特定的错误消息。有没有办法在业务规则验证错误中获取数据库验证错误?
asp.net-mvc - 请求教程以向 NerdDinner ASP.NET MVC 应用程序添加 Openid 支持
我正在寻找使用 ASP.NET MVC NerdDinner 教程来了解 ASP.NET MVC 和 OpenId。
我想将 NerdDinner 中的身份验证系统替换为仅 OpenId。我已经下载了最新的 DotNetOpenAuth 库,但我不确定如何将它们放在一起。任何人都可以提供快速的分步教程吗?
这就像放入库中一样简单,还是应用程序也需要进行重大更改?
asp.net-mvc - 在 TDD 和 DDD 中,如何处理 fake 中的只读属性?
问题
创建假货时如何处理只读字段?
背景
我正处于使用 ASP.Net MVC 的初学者阶段,并且正在使用 Steven Sanderson 的 Sports Store 和 Scott Gu 的 Nerd Dinner 作为示例。我刚刚遇到的一个小问题是如何在进行伪造时使用只读属性。我正在使用 LINQToSQL。
我的界面是:
我的假货变成了
这是我的问题。字段 id、ssn 和 totalDrWhoEpisodesWatched 是只读的,所以上面的代码实际上不起作用。但是,我不知道如何创建一个假的新人并设置一个只读属性。我确信有一个解决方案,但我在搜索中还没有遇到它。
更新:继承+属性隐藏作为一种潜在的解决方案?
我还没有决定解决这个问题的坚定方法。我不喜欢为了制造假货而修改我的域类的想法。对我来说,为域类添加标记以进行测试是一种增加耦合的形式——耦合到测试的实现。我现在正在研究另一种可能性,即创建一个 FakePerson 类,该类继承自 Person,但使用新的读写属性隐藏属性。
到目前为止,这个解决方案是我的倾向。它确实违反了 Liskov 替换原则,但是在测试项目中并没有给我带来太多困扰。我很高兴听到对此作为解决方案的任何批评和/或反馈。
获胜者:模拟框架
起订量似乎可以完成这项工作。事实上,我最后一个通过继承隐藏属性的解决方案确实有效,但是通过使用 Moq,我获得了一组更易于维护的标准化功能。我假设其他模拟框架有这个功能,但我没有检查。据说起订量对于开始模拟写作来说更直接,我现在肯定是这样。
nerddinner - vs2008打不开NerdDinner项目
NerdDinner.csproj 不会在带有 .net 3.5 sp1 的 vs2008 sp1 中加载。我不是最新的这些工具或什么的吗?它抱怨此安装不支持此项目类型。
linq-to-sql - 有人在大型项目中使用生成的实体类吗?
在 NerdDinner 示例中,他们使用存储库模式将业务与数据层分离。但随后他们使用 Linq to SQL 生成的类(特别是晚餐)作为整个项目中使用的实体类。那么这到底有多解耦呢?这不像您可以轻松地交换 Linq-to-SQL。
在我的上一个项目中,我创建了一个单独的实体类,我在 linq 查询中填充了左/右,因为我发现即使您使用生成的部分 linq,您也无法填充您在查询时添加的任何其他字段。