У меня есть стандартная система заполнения форм, использующая C# и JavaScript. Данные для формы поступают из класса C#.
Я обновляю систему, чтобы она могла создавать многостраничные формы (без необходимости вызывать C# для изменения страниц). Члены класса теперь имеют атрибуты, указывающие, на какой странице отображается каждое поле формы.
Когда форма передается из JavaScript в C#, она вызывает на сервере функцию C#, которая проверяет вход. Если введенные данные недействительны, возвращается сообщение об ошибке.
В настоящее время я использую функцию проверки, которая выдает исключение, если проверенное утверждение неверно. Было бы здорово, если бы функция проверки могла сообщить JavaScript, на какой странице находится поле с ошибкой. Я надеялся, что смогу передать значение поля в функцию проверки, и она волшебным образом сможет определить, из какого класса получено поле, найти номер страницы и передать его обратно.
Пример кода:
public class PageAttribute : Attribute {
public int Page;
public PageAttribute(int page) {
Page = page;
}
}
public class Example {
public int Id;
[Page(1)]
public string Name;
[Page(1)]
public string Address;
[Page(2)]
public int Calls;
[Page(2)]
public int Emails;
}
public class CheckException : ApplicationException {
public int Page;
public CheckException(string message, int page = 0) : base(message) {
Page = page;
}
}
void Check(Object o, T item, Func validate, string message) {
if (!validate(item)) {
Type type = o.GetType();
// Somehow magically find out which element in object o item comes from
string name = "Calls";
MemberInfo info = type.GetField(name) as MemberInfo;
PageAttribute p = info.GetCustomAttribute(typeof(PageAttribute)) as PageAttribute;
throw new CheckException(message, p == null ? 0 : p.Page);
}
}
void Main() {
Example e = new Example() { Id = 1, Name = "test", Calls = 3 };
Check(e, e.Calls, x => x == 3, "Calls not equal to 3");
Check(e, e.Calls, x => x == 2, "Calls not equal to 2");
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... a-function
Есть ли способ найти родительский объект переменной, переданной функции? ⇐ C#
Место общения программистов C#
1729234934
Anonymous
У меня есть стандартная система заполнения форм, использующая C# и JavaScript. Данные для формы поступают из класса C#.
Я обновляю систему, чтобы она могла создавать многостраничные формы (без необходимости вызывать C# для изменения страниц). Члены класса теперь имеют атрибуты, указывающие, на какой странице отображается каждое поле формы.
Когда форма передается из JavaScript в C#, она вызывает на сервере функцию C#, которая проверяет вход. Если введенные данные недействительны, возвращается сообщение об ошибке.
В настоящее время я использую функцию проверки, которая выдает исключение, если проверенное утверждение неверно. Было бы здорово, если бы функция проверки могла сообщить JavaScript, на какой странице находится поле с ошибкой. Я надеялся, что смогу передать значение поля в функцию проверки, и она волшебным образом сможет определить, из какого класса получено поле, найти номер страницы и передать его обратно.
Пример кода:
public class PageAttribute : Attribute {
public int Page;
public PageAttribute(int page) {
Page = page;
}
}
public class Example {
public int Id;
[Page(1)]
public string Name;
[Page(1)]
public string Address;
[Page(2)]
public int Calls;
[Page(2)]
public int Emails;
}
public class CheckException : ApplicationException {
public int Page;
public CheckException(string message, int page = 0) : base(message) {
Page = page;
}
}
void Check(Object o, T item, Func validate, string message) {
if (!validate(item)) {
Type type = o.GetType();
// Somehow magically find out which element in object o item comes from
string name = "Calls";
MemberInfo info = type.GetField(name) as MemberInfo;
PageAttribute p = info.GetCustomAttribute(typeof(PageAttribute)) as PageAttribute;
throw new CheckException(message, p == null ? 0 : p.Page);
}
}
void Main() {
Example e = new Example() { Id = 1, Name = "test", Calls = 3 };
Check(e, e.Calls, x => x == 3, "Calls not equal to 3");
Check(e, e.Calls, x => x == 2, "Calls not equal to 2");
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79100821/is-there-a-way-to-find-the-parent-object-of-a-variable-passed-to-a-function[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия