попробуйте этот шаблон:
"^\s?([_a-z0-9-]+(.[a-z0-9-]+)@customercurrency.com)+([;.]([_a-z0-9-]+(.[a-z0-9-]+)@customercurrency.com))*$"
(ошибка в имени домена и скобки отсутствуют)
Если я вас правильно понимаю, то, что вы пытаетесь сделать, - это направить все запросы для данной Модели через общий контроллер типа T.
Вы бы хотели, чтобы T изменялся в зависимости от на запрошенной модели.
Вы хотите, чтобы / Product / Index
запускал MyController
. Это можно сделать, написав свой собственный IControllerFactory
и реализовать метод CreateController
следующим образом:
public IController CreateController(RequestContext requestContext, string controllerName)
{
Type controllerType = Type.GetType("MyController")
.MakeGenericType(Type.GetType(controllerName));
return Activator.CreateInstance(controllerType) as IController;
}
Да, вы можете, все в порядке, и я сам много использовал их.
Вам нужно убедиться, что когда вы наследуете от MyController, вы по-прежнему заканчиваете имя типа контроллером:
public class FooController : MyController<Foo>
{
...
}
Фабрика контроллеров по умолчанию использует "соглашение" вокруг имен контроллеров, когда пытается найти контроллер для отправки запроса. При желании вы можете переопределить эту функцию поиска, что позволит вашему универсальному контроллеру работать.
Эта статья MSDN ...
http://msdn.microsoft.com/en-us/magazine/dd695917.aspx
... содержит хорошее описание того, что происходит.
На вашем месте я бы получил исходный код MVC и создал бы тестовый проект MVC с исходным кодом, чтобы вы могли проверить, где генерируется исключение, и посмотреть, что вы можете справиться со своей общей идеей и принудительным соглашением об именах «* контроллер».