我正在(重新)devise大型应用程序,我们使用基于DDD的多层体系结构。 我们有数据层(存储库的实现),领域层(领域模型和接口 – 存储库,服务,工作单元的定义),服务层(服务的实现)的MVC。 到目前为止,我们使用跨所有图层的领域模型(主要是实体),我们只使用DTO作为视图模型(在控制器中,服务返回域模型和控制器创build视图模型,并将其传递给视图)。 我读过无数关于使用,不使用映射和通过DTO的文章。 我知道没有任何明确的答案,但我不确定是否可以或不从服务返回到控制器的域模型。 如果我返回域模型,它仍然不会传递给视图,因为控制器总是创build视图特定的视图模型 – 在这种情况下,它看起来是合法的。 另一方面,域模型离开业务层(服务层)时,感觉不对。 有时候服务需要返回没有在域中定义的数据对象,然后我们必须添加新的对象到未映射的域,或者创buildPOCO对象(这很丑陋,因为有些服务返回域模型,有些有效地返回DTO)。 问题是,如果我们严格使用视图模型,将域模型一直返回给控制器是否可行,还是应该总是使用DTO与服务层进行通信? 如果是这样,可以根据需要调整域模型吗? (坦率地说,我不这么认为,因为服务应该消费域名。)如果我们应该严格遵守DTO,是否应该在服务层定义? (我是这样认为的)有时很明显我们应该使用DTO(例如,当服务执行大量的业务逻辑并创build新的对象时),有时很明显我们应该只使用域模型(例如,当会员服务返回贫血的用户s) – 创build与领域模型相同的DTO似乎没有什么意义) – 但我更喜欢一致性和良好的实践。 文章域与DTO vs ViewModel – 如何以及何时使用它们? (还有其他一些文章)与我的问题非常相似,但是它不能回答这个问题。 文章我应该用EF来实现仓库模式的DTO吗? 也是类似的,但是它不处理DDD。 免责声明:我不打算使用任何devise模式,只是因为它存在而且很花哨,另一方面,我想使用好的devise模式和实践,因为它有助于devise整个应用程序,帮助分离至less目前来说,即使使用特定的模式也不是“必要的”。 一如既往,谢谢。
@Html.Label() , @Html.LabelFor()和@Html.LabelForModel()方法有什么@Html.LabelForModel() ?
我一直在研究几个小时,找不到任何真正的来源。 我在ASP.NET MVC 3中build立一个网站,并希望利用StackOverflow使用的Markdown编辑器。 有没有人有一个很好的教程? 你在哪里下载最新的减价? 它写的是什么语言? 我将从哪里开始将其整合到MVC 3项目中? 即使经过了所有的search和阅读,我仍然很困惑。 我遇到了一个网站。 http://daringfireball.net/projects/markdown/但是,这似乎古怪,似乎我将不得不学习一些关于CGI和PERL,我绝对没有经验。 一个JavaScript / jQuery版本将是出色的。 任何想法,链接,参考非常赞赏。 UPDATE 我注意到这个问题得到了相当数量的意见,所以我决定更新一些有用的参考。 我设法让一个Markdown编辑器在CodeTunnel.com上很好地工作,我写了一些关于它的博客。 希望他们帮助任何遇到这个问题的人。 MarkdownSharp和编码的HTML JQuery WMD插件 find并实施WMD编辑器
我有一个新的asp.net mvc项目,我想弄清楚存储图像的最佳位置,以及我如何从site.master引用它们(如果我有一个标题图像,我想显示在所有页)。 build议或最佳做法?
在我的ASP.NET MVC控制器里面,我有一个需要HttpRequest对象的方法。 我有权访问的是一个HttpRequestBase对象。 无论如何,我可以以某种方式转换这个? 我能做什么/我该怎么做?
我看到的是一个string布局属性。 但是,我怎样才能明确地将模型传递给布局呢?
我想在我的应用程序中增加特定控制器操作的请求超时。 我知道我可以在整个应用程序的web.config中做到这一点,但我宁愿改变它只是这一个行动。 Web.config示例: <system.web> <httpRuntime executionTimeout="1000" /> </system.web> 我该怎么做?
我的行动方法有以下几点: if (!ModelState.IsValid) return View(vm); 在视图中,如果模型状态无效,我不想提交允许删除的提交键。 有没有办法可以做到这一点? 模型状态在视图中可用吗? 更新:我根据我给出的答案实施了这个: <div class="adm_td0" style=" padding: 0;"> @if (ViewData.ModelState.IsValid) { <input type='submit' value='Delete' name='SubmitAction' /> } <input type='submit' value='Cancel' name='SubmitAction' /> </div>
我有一个ASP.NET MVC3客户端validation好奇的问题。 我有以下class级: public class Instrument : BaseObject { public int Id { get; set; } [Required(ErrorMessage = "Name is required.")] [MaxLength(40, ErrorMessage = "Name cannot be longer than 40 characters.")] public string Name { get; set; } } 从我看来: <div class="editor-field"> @Html.EditorFor(model => model.Name) @Html.ValidationMessageFor(model => model.Name) </div> 这里是我为这个字段的文本框生成的HTML: <input class="text-box single-line" data-val="true" data-val-required="Name […]
RedirectToAction是受保护的,我们只能在动作中使用它。 但是,如果我想在一个filterredirect? public class IsGuestAttribute: ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { if (!Ctx.User.IsGuest) filterContext.Result = (filterContext.Controller as Controller) .RedirectToAction("Index", "Home"); } }