속성 이름으로 클래스 (dbcontext) 속성에 동적으로 액세스

CusterN

Status라는 이름으로 특정 개체를 업데이트하는 것과 관련된 OnPost 메서드가 있습니다.

public async Task OnPostStatus()
{
            Status ExistingRecord = await _context.Status.FirstOrDefaultAsync(m => m.Id == Status.Id);

            if (ExistingRecord == null)
            {
                _context.Status.Add(Status);

            } else
            {
                ExistingRecord.Description = Status.Description;
                ExistingRecord.Hint = Status.Hint;
                _context.Attach(ExistingRecord).State = EntityState.Modified;
            }
            await _context.SaveChangesAsync();
            StatusMessage = "Saved!";
            await OnGetAsync();

        }

하지만 실제로 동일한 속성을 가진 4 개의 다른 객체를 사용하여 동일한 OnPost를 수행합니다. 따라서 다음과 같이 개체 유형을 OnPost에 전달하여보다 동적으로 만들고 싶습니다.

        public async Task OnPost(string objectName)
        {
            var objectName ExistingRecord = await _context.(objectName).FirstOrDefaultAsync(m => m.Id == (objectName).Id);

            if (ExistingRecord == null)
            {
                _context.(objectName).Add((objectName));

            } else
            {
                ExistingRecord.Description = (objectName).Description;
                ExistingRecord.Hint = (objectName).Hint;
                _context.Attach(ExistingRecord).State = EntityState.Modified;
            }
            await _context.SaveChangesAsync();
            StatusMessage = "Saved!";
            await OnGetAsync();

        }

나는 구체적인 구문을 모른다!

유용 칭

이러한 클래스에는 정확히 동일한 필드가 a common class있으므로 필드를 저장할 기본 클래스로 만들 수 있습니다 .

내 예에는 세 개의 테이블 (tb1, tb2, tb3)과 기본 클래스 ( tbBase)가 있으며 기본 클래스는 데이터베이스와 관련이 없습니다.

 public class tbBase
{
    public int Id { get; set; }
    public string Description { get; set; }
    public string Hint { get; set; }
}
public class tb1: tbBase
{

}
public class tb2 : tbBase
{

}
public class tb3 : tbBase
{

}

그런 다음보기에서을 가져 와서 tbBase class as the parameterpost 메소드에 전달하고 a specific table type parameter수정해야합니다.

<form method="post">

    Id:<input id="Id" type="text" name="Id" /><br/>
    Description: <input id="Description" type="text" name="Description" /><br/>
    Hint: <input id="Hint" type="text" name="Hint" /><br/>
    table type:<input id="Text1" type="text" name="type" />
    <input id="Button1" type="submit" value="button" />
</form>

PageModel에서 Dictionary다음을 통해 매개 변수 테이블 유형 및 특정 유형의 키-값 쌍을 저장하십시오 .

        public async Task OnPost(tbBase table, string type)
    {
        Dictionary<string, Type> TableTypeDictionary = new Dictionary<string, Type>()
    {
          { "tb1", typeof(tb1) },
          { "tb2", typeof(tb2) },
          { "tb3", typeof(tb3) }
    };
        dynamic obj = Activator.CreateInstance(TableTypeDictionary[type]);
        for (int i = 0; i < obj.GetType().GetProperties().Length; i++)
        {
            obj.GetType().GetProperties()[i].SetValue(obj, table.GetType().GetProperty(obj.GetType().GetProperties()[i].Name).GetValue(table, null), null);
        }
        var ExistingRecord = _context.Find(TableTypeDictionary[type], obj.Id);
        if (ExistingRecord == null)
        {
            obj.Id = 0;//ID is self growing, no need to customize settings
            _context.Add(obj);
        }
        else
        {
            ExistingRecord.Description = table.Description;
            ExistingRecord.Hint = table.Hint;
            _context.Attach(ExistingRecord).State = EntityState.Modified;
        }
        await _context.SaveChangesAsync();
        StatusMessage = "Saved!";
        await OnGetAsync();

    }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Dart / Flutter에서 클래스 속성에 동적으로 액세스

분류에서Dev

Scala에서 동적으로 클래스 속성 생성

분류에서Dev

동적으로 모델 속성에 대한 Django 액세스

분류에서Dev

클래스의 속성에 간접적으로 액세스하는 방법

분류에서Dev

LINQ WHERE 문의 속성에 이름으로 액세스

분류에서Dev

다른 클래스의 정적 속성 및 정적 상수에 동적으로 액세스하는 방법

분류에서Dev

클래스에 동적으로 속성 추가

분류에서Dev

Typescript : 클래스에 동적으로 속성 할당

분류에서Dev

클래스에 동적으로 속성 추가

분류에서Dev

요소에 데이터 속성을 추가하고 클래스 이름에서 값을 동적으로 추가

분류에서Dev

데코레이터 인수로 클래스 속성 액세스

분류에서Dev

동적으로 생성 된 클래스에서 속성 가져 오기

분류에서Dev

TypeScript에서 개체 속성에 동적으로 액세스하는 방법

분류에서Dev

이름으로 사용자 지정 파이썬 유형 속성에 액세스

분류에서Dev

클래스에서 자동으로 생성 된 속성 사용

분류에서Dev

WPF Datagrid에 표시된 클래스 목록에 속하는 클래스에 동적으로 새 속성 추가

분류에서Dev

다른 클래스에서 frord 선언으로 추가 된 클래스 속성에 액세스

분류에서Dev

폴리머 표현식은 이름으로 속성에 액세스합니다.

분류에서Dev

키 속성으로 자식 액세스

분류에서Dev

Flutter Dart-동적으로 클래스 속성 가져 오기

분류에서Dev

routeProvider의 경로 속성에 액세스

분류에서Dev

Linq로 XElement의 속성에 액세스

분류에서Dev

동적 이름으로 자바 스크립트 속성 참조

분류에서Dev

VBA-클래스 모듈-인덱스로 속성에 액세스

분류에서Dev

속성 이름을 기반으로 클래스의 속성 인쇄

분류에서Dev

C #으로 제네릭 클래스의 동적 클래스 속성에 액세스하는 방법은 무엇입니까?

분류에서Dev

함수에서 동적으로 생성 된 클래스에서 상속

분류에서Dev

PHP로 HTML 양식에서 이름 속성에 액세스

분류에서Dev

속성 이름없이 jstl의 클래스 속성에 액세스

Related 관련 기사

  1. 1

    Dart / Flutter에서 클래스 속성에 동적으로 액세스

  2. 2

    Scala에서 동적으로 클래스 속성 생성

  3. 3

    동적으로 모델 속성에 대한 Django 액세스

  4. 4

    클래스의 속성에 간접적으로 액세스하는 방법

  5. 5

    LINQ WHERE 문의 속성에 이름으로 액세스

  6. 6

    다른 클래스의 정적 속성 및 정적 상수에 동적으로 액세스하는 방법

  7. 7

    클래스에 동적으로 속성 추가

  8. 8

    Typescript : 클래스에 동적으로 속성 할당

  9. 9

    클래스에 동적으로 속성 추가

  10. 10

    요소에 데이터 속성을 추가하고 클래스 이름에서 값을 동적으로 추가

  11. 11

    데코레이터 인수로 클래스 속성 액세스

  12. 12

    동적으로 생성 된 클래스에서 속성 가져 오기

  13. 13

    TypeScript에서 개체 속성에 동적으로 액세스하는 방법

  14. 14

    이름으로 사용자 지정 파이썬 유형 속성에 액세스

  15. 15

    클래스에서 자동으로 생성 된 속성 사용

  16. 16

    WPF Datagrid에 표시된 클래스 목록에 속하는 클래스에 동적으로 새 속성 추가

  17. 17

    다른 클래스에서 frord 선언으로 추가 된 클래스 속성에 액세스

  18. 18

    폴리머 표현식은 이름으로 속성에 액세스합니다.

  19. 19

    키 속성으로 자식 액세스

  20. 20

    Flutter Dart-동적으로 클래스 속성 가져 오기

  21. 21

    routeProvider의 경로 속성에 액세스

  22. 22

    Linq로 XElement의 속성에 액세스

  23. 23

    동적 이름으로 자바 스크립트 속성 참조

  24. 24

    VBA-클래스 모듈-인덱스로 속성에 액세스

  25. 25

    속성 이름을 기반으로 클래스의 속성 인쇄

  26. 26

    C #으로 제네릭 클래스의 동적 클래스 속성에 액세스하는 방법은 무엇입니까?

  27. 27

    함수에서 동적으로 생성 된 클래스에서 상속

  28. 28

    PHP로 HTML 양식에서 이름 속성에 액세스

  29. 29

    속성 이름없이 jstl의 클래스 속성에 액세스

뜨겁다태그

보관