HttpGet 및 HttpPost가 유효성 검사 오류를 반환하고 SelectList를로드합니다.

대니 컬렌

사용자에게 Person의 XApplication상태를 Accepted 또는 Rejected 로 변경하라는 메시지를 표시하는 ViewModel을 기반으로하는 양식이 있습니다 .

POST를 통해 양식을 제출할 때 새 항목을 XApplication만들고 성공하면 사용자를 동일한 페이지로 되돌리고 싶습니다 . 오류가있는 경우를 전달하여 양식을 다시로드하고 싶습니다 . View(personApp)그러면 razor 메서드를 통해 오류가 표시됩니다 @Html.ValidationSummary().

그러나이 작업을 시도하고 수행하면 View ()가 내 SelectList에 대해 알지 못하며 드롭 다운을 "Application Accepted"및 "Application Rejected"로 채울 수 없습니다.

내가 취할 수있는 다른 접근 방법이 있습니까?

[Route("student/xApplication/{personId?}")]
[HttpGet]
public ActionResult xApplication(int? personId)
{
    if (personId == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    Person person = db.People.Find(personId);
    if (person == null)
    {
        return HttpNotFound();
    }

    // Prepare ViewModel to pass to view, based on personId
    PersonViewModel personVModel = new PersonViewModel();
    personVModel.Person = person;

    // Get XApplication Data
    var xApps = from a in db.XApplications where a.personId == personId select a;

    XApplication personXApplication = null;
    if (xApps.Count() > 0)
    {
        personXApplication = xApps.First();
    }
    personVModel.XApplications = personXApplication;

    List<SelectListItem> applicationStatusItems = new List<SelectListItem>();
    applicationStatusItems.Add(new SelectListItem { Value = "1", Text = "Application Accepted" });
    applicationStatusItems.Add(new SelectListItem { Value = "0", Text = "Application Rejected" });
    SelectList applicationStatusList = new SelectList(applicationStatusItems, "Value", "Text", null);

    personVModel.ApplicationStatusList = applicationStatusList;

    return View(personVModel);
}

[HttpPost]
[Route("student/xApplication")]
public ActionResult xApplication(PersonViewModel personVModel)
{
    if (ModelState.IsValid)// Checks no errors
    {
        db.XApplications.Add(personVModel.XApplications);
        db.SaveChanges();
        return Redirect("/student/xApplication/" + personVModel.Person.id);
    }

    return View(personVModel);
}
에 카드

이 때문에 SelectList하드 코딩, 나는 내부를 생성 제안 PersonViewModel피하기 코드 중복에. 를 생성하는 코드를 SelectList라는 공용 메서드 로 이동 PopulateApplicationStatusList하고 생성자에서 호출하면됩니다.

public class PersonViewModel
{
    public PersonViewModel()
    {
        this.PopulateApplicationStatusList();
    }

    public SelectList ApplicationStatusList { get; set; }

    public void PopulateApplicationStatusList()
    {
        List<SelectListItem> applicationStatusItems = new List<SelectListItem>();
        applicationStatusItems.Add(new SelectListItem { Value = "1", Text = "Application Accepted" });
        applicationStatusItems.Add(new SelectListItem { Value = "0", Text = "Application Rejected" });
        this.ApplicationStatusList = new SelectList(applicationStatusItems, "Value", "Text", null);
    }
}

get 작업 메서드에서 ApplicationStatusList새 인스턴스를 만들 때 생성됩니다.PersonViewModel

[Route("student/xApplication/{personId?}")]
[HttpGet]
public ActionResult xApplication(int? personId)
{
    if (personId == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    Person person = db.People.Find(personId);
    if (person == null)
    {
        return HttpNotFound();
    }

    // Prepare ViewModel to pass to view, based on personId
    PersonViewModel personVModel = new PersonViewModel(); // ApplicationStatusList is generated here
    personVModel.Person = person;

    // Get XApplication Data
    var xApps = from a in db.XApplications where a.personId == personId select a;

    XApplication personXApplication = null;
    if (xApps.Count() > 0)
    {
        personXApplication = xApps.First();
    }
    personVModel.XApplications = personXApplication;

    return View(personVModel);
}

작업 후 메서드에서 메서드 ApplicationStatusList를 호출하여 오류가 발생하면 속성 을 다시 채울 수 있습니다.PopulateApplicationStatusList

[HttpPost]
[Route("student/xApplication")]
public ActionResult xApplication(PersonViewModel personVModel)
{
    if (ModelState.IsValid)// Checks no errors
    {
        db.XApplications.Add(personVModel.XApplications);
        db.SaveChanges();
        return Redirect("/student/xApplication/" + personVModel.Person.id);
    }

    // repopulate ApplicationStatusList property
    personVModel.PopulateApplicationStatusList();

    return View(personVModel);
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

고유 유효성 검사기-오류 (경고)를 추가하고 true를 반환합니다.

분류에서Dev

laravel 유효성 검사 메서드가 오류를 반환합니다.

분류에서Dev

jquery datepicker 유효성 검사가 할당 크기 과부하 오류를 반환합니다.

분류에서Dev

유효성 검사 오류를 배열로 반환하고 json으로 변경

분류에서Dev

유효성 검사를 위해 attr_accessor를 사용하면 항상 오류가 반환됩니다.

분류에서Dev

ApplicationUser를 상속하면 유효성 검사 오류가 발생합니다.

분류에서Dev

Laravel 5 : 유효성 검사 오류가 필드에 값을 반환합니다.

분류에서Dev

Tensorflow가 유효성 검사 손실 및 유효성 검사 정확도를 기록하지 않음

분류에서Dev

SpringData REST가 스택 추적이 아닌 JSON에서 Hibernate-JPA 유효성 검사 및 서버 내부 오류를 반환하는 방법

분류에서Dev

AJAX가있는 PHP 메일은 서버에서 유효성 검사 오류를 반환하지 않습니다.

분류에서Dev

장고 유효성 검사는 하나 대신 두 개의 오류를 반환합니다.

분류에서Dev

교차 유효성 검사를 사용하려고 할 때 오류가 발생합니다.

분류에서Dev

오류 및 helperText를 사용하여 재료 UI 양식 유효성 검사에 반응

분류에서Dev

Twitter 카드 (사진)가 유효성 검사 도구에서 오류를 표시하지만 모든 단일 태그가 유효합니다.

분류에서Dev

장고 필드 유효성 검사 오류가 발생하지 않습니다.

분류에서Dev

Vue 이메일 유효성 검사가 true를 반환하지 않습니다.

분류에서Dev

Ajax 원격 유효성 검사를 통해 경고 (오류 아님)를 반환합니다.

분류에서Dev

맞춤 유효성 검사기가 오류를 표시하지 않음

분류에서Dev

React-proptypes 유효성 검사-반환 오류가 작동하지 않지만 throw는 작동합니다.

분류에서Dev

메서드에 오류를 추가하면 activerecord의 유효성을 검사하지 않습니다.

분류에서Dev

SSIS 오류 코드 0xC0202020 : 버퍼 유형이 유효하지 않습니다. 파이프 라인 레이아웃 및 모든 구성 요소가 유효성 검사를 통과하는지 확인

분류에서Dev

이 HTML 코드를 Javascript 함수 및 유효성 검사로 작성했지만 유효성 검사가 작동하지 않습니다. 내가 뭘 잘못하고 있는지

분류에서Dev

2 개 이상의 오류를 반환하는 유효성 검사

분류에서Dev

실제로 유효성 검사 오류가 아닌 오류를 처리하는 Codeigniter 가장 좋은 방법

분류에서Dev

유효성 검사 이벤트 및 ErrorProvider를 사용한 유효성 검사-오류 요약 표시

분류에서Dev

녹아웃 유효성 검사가 유효성 검사 사양에 따라 오류 메시지를 업데이트하지 않습니다.

분류에서Dev

유효성 검사 양식 및 필드 유효성 검사를위한 두 가지 이벤트

분류에서Dev

jQuery는 유효성 검사에서 생성 된 오류를 제거하고 반복을 중지합니다.

분류에서Dev

Template10-Validation에서 오류 유효성 검사를 사용자 지정하려고하면 DependencyProperty 오류가 발생합니다.

Related 관련 기사

  1. 1

    고유 유효성 검사기-오류 (경고)를 추가하고 true를 반환합니다.

  2. 2

    laravel 유효성 검사 메서드가 오류를 반환합니다.

  3. 3

    jquery datepicker 유효성 검사가 할당 크기 과부하 오류를 반환합니다.

  4. 4

    유효성 검사 오류를 배열로 반환하고 json으로 변경

  5. 5

    유효성 검사를 위해 attr_accessor를 사용하면 항상 오류가 반환됩니다.

  6. 6

    ApplicationUser를 상속하면 유효성 검사 오류가 발생합니다.

  7. 7

    Laravel 5 : 유효성 검사 오류가 필드에 값을 반환합니다.

  8. 8

    Tensorflow가 유효성 검사 손실 및 유효성 검사 정확도를 기록하지 않음

  9. 9

    SpringData REST가 스택 추적이 아닌 JSON에서 Hibernate-JPA 유효성 검사 및 서버 내부 오류를 반환하는 방법

  10. 10

    AJAX가있는 PHP 메일은 서버에서 유효성 검사 오류를 반환하지 않습니다.

  11. 11

    장고 유효성 검사는 하나 대신 두 개의 오류를 반환합니다.

  12. 12

    교차 유효성 검사를 사용하려고 할 때 오류가 발생합니다.

  13. 13

    오류 및 helperText를 사용하여 재료 UI 양식 유효성 검사에 반응

  14. 14

    Twitter 카드 (사진)가 유효성 검사 도구에서 오류를 표시하지만 모든 단일 태그가 유효합니다.

  15. 15

    장고 필드 유효성 검사 오류가 발생하지 않습니다.

  16. 16

    Vue 이메일 유효성 검사가 true를 반환하지 않습니다.

  17. 17

    Ajax 원격 유효성 검사를 통해 경고 (오류 아님)를 반환합니다.

  18. 18

    맞춤 유효성 검사기가 오류를 표시하지 않음

  19. 19

    React-proptypes 유효성 검사-반환 오류가 작동하지 않지만 throw는 작동합니다.

  20. 20

    메서드에 오류를 추가하면 activerecord의 유효성을 검사하지 않습니다.

  21. 21

    SSIS 오류 코드 0xC0202020 : 버퍼 유형이 유효하지 않습니다. 파이프 라인 레이아웃 및 모든 구성 요소가 유효성 검사를 통과하는지 확인

  22. 22

    이 HTML 코드를 Javascript 함수 및 유효성 검사로 작성했지만 유효성 검사가 작동하지 않습니다. 내가 뭘 잘못하고 있는지

  23. 23

    2 개 이상의 오류를 반환하는 유효성 검사

  24. 24

    실제로 유효성 검사 오류가 아닌 오류를 처리하는 Codeigniter 가장 좋은 방법

  25. 25

    유효성 검사 이벤트 및 ErrorProvider를 사용한 유효성 검사-오류 요약 표시

  26. 26

    녹아웃 유효성 검사가 유효성 검사 사양에 따라 오류 메시지를 업데이트하지 않습니다.

  27. 27

    유효성 검사 양식 및 필드 유효성 검사를위한 두 가지 이벤트

  28. 28

    jQuery는 유효성 검사에서 생성 된 오류를 제거하고 반복을 중지합니다.

  29. 29

    Template10-Validation에서 오류 유효성 검사를 사용자 지정하려고하면 DependencyProperty 오류가 발생합니다.

뜨겁다태그

보관