小编kim*_*3er的帖子

自定义DataAnnotations Validator派生自RegularExpressionAttribute

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?

validation asp.net-mvc data-annotations

5
推荐指数
1
解决办法
2108
查看次数

覆盖F#中的构造函数

我如何在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)

丰富

f# constructor overriding

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

你如何使用F#中的IList <>?

我有一个类型列表IList<Effort>.模型Effort包含一个float被调用的Amount.我想Amount在F#中返回整个列表的总和.这将如何实现?

f# ilist sum

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

在 TypeScript 中定义不同泛型类型的数组

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每行的含义可能有所不同?

arrays generics typescript

3
推荐指数
1
解决办法
108
查看次数

无法将通用类转换为通用接口,为什么?

我有一个继承自的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)

我没有掌握哪种基本的继承原则,请帮忙.

c# inheritance repository

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

检测通用类型中的接口

我有一个方法:

    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()从每个方法中删除约束允许代码工作.问题在于我试图将接口作为可以实例化的对象传递出去.

c# generics interface constraints

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

重定向使用ASP.NET MVC引用部分视图表单帖子

我正在寻找最佳实践建议.

我有一个带有Partial的ShoppingBag控制器,列出了用户包里的所有物品.在此部分中,您可以通过表格帖子从包中删除商品.

Partial已放置在Master Page中,该Master Page由Controller中的每个视图引用.当一个项目从用户的包中删除时,我希望将用户重定向到原始视图.我对如何用JavaScript实现这一点感到非常高兴,这是我不清楚的非JavaScript.

我是:

  1. 使用Request.UrlReferrer检测引用操作并重定向.从URL检测动作/路由可能非常费力.
  2. 使用帖子传递隐藏字段.不是真的热衷于膨胀HTML的想法.
  3. 不要重定向到创建者,重定向到确认页面.如果可能的话,宁愿避免.
  4. 我错过了什么.

任何帮助将不胜感激.

丰富

asp.net-mvc partial-postback

0
推荐指数
1
解决办法
1650
查看次数