Gu提供了一个示例,说明如何创建覆盖RegularExpressionAttribute的自定义验证程序.
这样做的好处是您不必创建自定义模型验证器,但我无法使其工作.
给出以下代码:
public class NameAttribute : RegularExpressionAttribute {
public NameAttribute()
: base(@"^[\w\s\-\']+$") {
}
}
Run Code Online (Sandbox Code Playgroud)
这有效:
[RegularExpression(@"^[\w\s\-\']+$")]
Run Code Online (Sandbox Code Playgroud)
但这不是:
[Name]
Run Code Online (Sandbox Code Playgroud)
我是否误解了Scott的一个方面的例子,或者是MVC不支持派生类型开箱即用的例子,所以实际上我必须创建一个相应的ModelValidator?
我如何在F#中编写以下C#代码?
namespace Shared {
public class SharedRegistry : PageRegistry {
public SharedRegistry(bool useCache = true)
: base(useCache) {
// Repositories
ForRequestedType<IAddressRepository>().TheDefaultIsConcreteType<SqlAddressRepository>();
ForRequestedType<ISharedEnquiryRepository>().TheDefaultIsConcreteType<SharedEnquiryRepository>();
// Services
ForRequestedType<IAddressService>().TheDefaultIsConcreteType<AddressService>();
ForRequestedType<ISharedEnquiryService>().TheDefaultIsConcreteType<SharedEnquiryService>();
}
}
}
Run Code Online (Sandbox Code Playgroud)
就我所管理的而言,但我无法PageRegistry在声明我自己的默认构造函数的同时继承.
type SharedRegistry(useCache: bool) =
inherit PageRegistry(useCache)
new() = new SharedRegistry(true)
Run Code Online (Sandbox Code Playgroud)
丰富
我有一个类型列表IList<Effort>.模型Effort包含一个float被调用的Amount.我想Amount在F#中返回整个列表的总和.这将如何实现?
interface Instruction {
promise: Promise<unknown>,
callback?: ($html: JQuery, data: unknown ) => void
}
const arr: Instruction[] = [
{ promise: Promise.resolve({ foo: 'bar' }), callback: ($html, data) => console.log(data.foo) },
{ promise: Promise.resolve({ bar: 'foo' }), callback: ($html, data) => console.log(data.bar) }
];
Run Code Online (Sandbox Code Playgroud)
鉴于上述情况,我希望 TypeScript 能够识别回调函数中的 data 参数与 Promise 的解析类型相同。
如果它是独立的,我可以这样做:
interface Instruction<T> {
promise: Promise<T>,
callback?: ($html: JQuery, data: T) => void
}
Run Code Online (Sandbox Code Playgroud)
但是,我将如何定义数组,T每行的含义可能有所不同?
我有一个继承自的IRepository接口IRepository<TObject>.我还有一个继承自S的SqlRepository类,而S QLRepository<TObject>又实现了IRepository<TObject>.为什么我不能将SqlRepository的实例实例化为IRepository?
public class MyObject : IObject {
...
}
public interface IRepository<TObject> where TObject : IObject, new() {
...
}
public interface IRepository : IRepository<MyObject> { }
public class SqlRepository<TObject> : IRepository<TObject> where TObject : IObject, new() {
...
}
public class SqlRepository : SqlRepository<MyObject> { }
public class Controller {
private IRepository _repository;
public Controller() {
_repository = new SqlRepository();
}
}
Run Code Online (Sandbox Code Playgroud)
尝试将新的SqlRepository分配给Controller类中的_repository时,上面的示例失败,并显示以下错误消息.
Argument '1': cannot convert from 'SqlRepository' to 'IRepository'
Run Code Online (Sandbox Code Playgroud)
我没有掌握哪种基本的继承原则,请帮忙.
我有一个方法:
public void StoreUsingKey<T>(T value) where T : class, new() {
var idModel = value as IIDModel;
if (idModel != null)
Store<T>(idModel);
AddToCacheUsingKey(value);
}
Run Code Online (Sandbox Code Playgroud)
我想根据value参数的实现选择性地调用以下方法IIDModel.
public void Store<T>(T value) where T : class, IIDModel, new() {
AddModelToCache(value);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉Store<T>了value从参数StoreUsingKey<T>工具IIDModel?或者我是以错误的方式来做这件事的?
丰富
回答
new()从每个方法中删除约束允许代码工作.问题在于我试图将接口作为可以实例化的对象传递出去.
我正在寻找最佳实践建议.
我有一个带有Partial的ShoppingBag控制器,列出了用户包里的所有物品.在此部分中,您可以通过表格帖子从包中删除商品.
Partial已放置在Master Page中,该Master Page由Controller中的每个视图引用.当一个项目从用户的包中删除时,我希望将用户重定向到原始视图.我对如何用JavaScript实现这一点感到非常高兴,这是我不清楚的非JavaScript.
我是:
任何帮助将不胜感激.
丰富
asp.net-mvc ×2
c# ×2
f# ×2
generics ×2
arrays ×1
constraints ×1
constructor ×1
ilist ×1
inheritance ×1
interface ×1
overriding ×1
repository ×1
sum ×1
typescript ×1
validation ×1