我想知道模块模式或Constructor/protoType模式是否更适用于我的工作.
基本上我使用的是不引人注目的javascript - HTML文档引用了.js文件.
我对模块模式的理解:
这听起来像是我情况的完美模式,因为我不需要创建对象和继承层次结构等.
我对构造函数/原型模式的理解:
我是否正确,为了提供不引人注目的javascript,模块模式是理想的?
javascript design-patterns unobtrusive-javascript module-pattern
我正在尝试使用Event Sourcing实现我自己的CQRS基础架构,以便更好地学习它.作为一个示例项目,我正在实现一个博客引擎,我知道它可能不是一个完美的契合,但我只想做一些真实的事情.
我现在遇到的问题是验证.每个帖子都有一个shortUrl,并且shortUrl应该是唯一的,但是我应该在哪里将此验证放在域中?我知道在我通过读取读取存储来发送命令之前我将进行验证,以便在创建create post命令或更新post命令时检查它是否有效.
我可以想到两个"解决方案".
Blog聚合,可以跟踪所有与博客相关的设置,也可以引用所有帖子.但在我看来,这个问题是我必须在那个场景中处理聚合之间的通信,以及每次我需要验证shortUrl我需要从事件存储中读取所有事件以创建所有帖子的唯一性时这似乎很复杂.还有其他选择吗?请注意,我知道我的域名可能不适合cqrs和DDD,但我这样做是为了在小域中学习.
我一直@helper在基于Scott Gu的帖子在Razor中实现一些功能,事情进展顺利.
我想知道的是,是否有可能@helper从另一个人那里打电话.例如,我有以下帮助器,显示以下日期和时间DateTime?:
@helper DateTimeDisplay(DateTime? date)
{
if (date.HasValue)
{
@date.Value.ToShortDateString()<br />
<text>at</text> @date.Value.ToShortTimeString()
}
else
{
<text>-</text>
}
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但在某些情况下我有其他不可空的字段,所以我尝试添加这个以保持干燥:
@helper DateTimeDisplay(DateTime date)
{
DateTimeDisplay(new DateTime?(date));
}
Run Code Online (Sandbox Code Playgroud)
这编译并运行正常,但是当它呈现时它只显示为非可空的空字符串DateTime.这是调用@helper函数的标记.Model.UpdateDate是一个常规的DateTime,Model.LastRun是一个DateTime?
...
<tr>
<td>Last updated </td>
<td class="value-field">@Helpers.DateTimeDisplay(Model.UpdateDate)</td>
</tr>
<tr>
<td>Last run </td>
<td class="value-field">@Helpers.DateTimeDisplay(Model.LastRun)</td>
</tr>
...
Run Code Online (Sandbox Code Playgroud)
有没有办法@helper通过从另一个函数调用它来呈现一个函数?
c# asp.net-mvc razor razor-declarative-helpers asp.net-mvc-3
我注意到,在创建自定义验证属性时,我的验证仅在本机MVC数据注释触发后触发.有什么办法可以"同时"解雇吗?
为了表明我的意思,假装我有这样的形式:
FirstName: <FirstName Textbox>
LastName: <LastName TextBox>
Zip: <Zip TextBox>
Run Code Online (Sandbox Code Playgroud)
所以我对所有3都有一个[Required]注释,但另外,对于Zip属性,我有一个自定义属性.如果用户没有输入名字或姓氏,但是输入了无效的Zip(我的属性应该验证这一点),那么所有三个都应该有一条错误消息 - 但是没有.firstName和lastName只有一个错误.
这是代码:
Person.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
// My validator
using MvcApplication3.Extensions.Validation;
namespace MvcApplication3.Models
{
public class Person
{
[Required(ErrorMessage="Field required!")]
public string firstName{get;set;}
[Required(ErrorMessage="Field required!")]
public string lastName { get; set; }
[Zip(ErrorMessage="You gotta put in a valid zip code")]
[Required(ErrorMessage="Field required!")]
public string zipCode { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
控制器:
[HttpPost]
public ActionResult Index(FormCollection form, Person person)
{ …Run Code Online (Sandbox Code Playgroud) 我有一个布局,需要将项目列表组织成两个垂直列.这些项目在<div>s 的单个列表中,标记也被重新用于移动设备,因此我不想修改结构.
我在这里遇到的问题是每个项目都有一个扩展的内容区域,用户可以切换,当这个内容被扩展时,该列的垂直空间需要向下扩展,而另一列保持固定.
现在我有一个浮动项目的基本解决方案,但是当我扩展内容区域时,垂直空间在两列中扩展而不是仅扩展.
![[屏幕快照]](https://i.stack.imgur.com/xJ0BU.gif)
是否可以设置此样式以支持所需的行为?或者我将不得不修改项目的结构以使其工作?在此先感谢您的帮助!
我即将开始一个新的Titanium项目.到目前为止,我所写的是现在被认为是"经典项目"(我在合金之前就开始编写Titanium应用程序)了.
我想知道在为我的新项目切换到Alloy时是否值得.我知道基本上,在编译到java项目或objective-c项目之前,Alloy编译为"Classic"Titanium代码.我也知道"预编译"过程中的一大优势,即在合金代码中标记仅与Android或iPhone相关且在编译的"经典"代码中不包括其他代码.
我主要担心的是灵活性 - 就像"经典"一样,我觉得我对代码有更多的控制权以及正在发生的事情.
第二个问题,我有控制(如开源滑动菜单),不是为合金编写的 - 我怎样才能将它们作为我项目的一部分?
我发现(在TiConf 2014中引入)TI UX(https://github.com/jaraen/Ti.UX.Templates)是为Alloy编写的,我开始要求自己使用Alloy.
其他几个问题:
谢谢
titanium appcelerator appcelerator-mobile titanium-mobile titanium-alloy
我想创建一个网址,如下所示:
公告,健康,政策是控制者
所以我创建了一个像这样的新url路由映射:
routes.MapRoute(
"News",
"news/{controller}/{action}/{id}",
new { controller = "Announcement", action = "Index", id = "" }
);
Run Code Online (Sandbox Code Playgroud)
它工作正常但是,以下两个网址显示相同的页面:
我想阻止第二个网址.
我该怎么办?
谢谢Kwon
asp.net-mvc ×3
c# ×2
razor ×2
appcelerator ×1
cqrs ×1
css ×1
css-float ×1
html ×1
javascript ×1
titanium ×1
url-routing ×1
validation ×1