2012-02-09 3 views
0

MVC3 C# .Net 웹 응용 프로그램이 있습니다. Excel에서 가져 오기 기능이 있습니다. 이 기능은 Rate 컨트롤러의 Import 메서드에서 수행됩니다. 요율/가져 오기보기에서 볼 수 있습니다. 가져올 때 일부 행은 성공적이지만 일부는 성공적이지 않습니다. 문자열 배열로 오류를 수집하고 있습니다. 하나 이상의 행을 성공적으로 가져 오면 가져 오기가 성공한 것으로 간주되므로 앱이 제안서 편집보기로 다시 이동합니다. 정보 오류를 제안서 편집보기로 다시 전달하여 표시하려고합니다. 이 작업을 수행하는 방법은 무엇입니까?한 컨트롤러에서 다른보기 및/또는 컨트롤러로 MVC3 메시지 전달

+0

"앱이 제안서 편집으로 돌아갑니다"라는 말은 양식을 제출 한 후 리디렉션을하고 있다는 것을 의미합니까? 그렇다면 정보를 저장할 수있는 유일한 장소는 세션 또는 쿠키에서 ID를 다른 컨트롤러로 전달하여 문자열을 조회하는 데이터베이스에 있습니다. ViewBag/ViewData 수명주기는 요청 수명과 함께 종료됩니다. 리디렉션은 브라우저에서 새로운 "요청"을 만듭니다. –

답변

3

몇 가지가 있습니다.

TempData는

이 컨트롤러에서 사용할 수 있습니다. TempData는 단일 리디렉션을 통해 지속됩니다.

public ActionResult Process() 
{ 
    // ... Process your rows, get array of errors back ... 

    TempData["errors"] = errors; 
    return RedirectToAction("Edit"); 
} 

public ActionResult Edit() 
{ 
    var errors = (IEnumerable<string>)TempData["errors"]; // Get the errors back. 
    return View(errors); // Pass into the view 
} 

ModelState

당신은 ModelState에 직접 이러한 오류를 추가 한 다음 편집 양식을 다시 표시 할 수있다. 리디렉션에서 지속되지 않습니다.

public ActionResult Process() 
{ 
    // ... Process your rows, get array of errors back ... 

    for(var i = 0; i < errors.Length; i++) 
    { 
     ModelState.AddModelError("row" + i, errors[i]); 
    } 

    // Can't redirect here - ModelState doesn't persist. 
    return View("Edit"); 
} 

그런 다음 편집보기에서 바로 확인 요약을 표시 :

@Html.ValidationSummary("The following row errors occured:"); 

이이 HTML 렌더링됩니다. 클래스는 MVC에 의해 설정된 기본 클래스입니다.

<div class="validation-summary-errors"> 
    <span>The following row errors occured:</span> 
    <ul> 
     <li>...Error 1...</li> 
     ... Other errors ... 
    </ul> 
</div> 
+0

@leniency .... 감사합니다. 좋은 물건! ModelState에 대한 질문 .... ModelState는 오류를 어떻게 표시합니까? 편집보기에 더 많은 코드가 있어야합니까? 감사합니다 – MikeTWebb

+0

@MikeTWebb 예, 마지막 행'@ Html.ValidationSummary ("다음 행 오류가 발생했습니다 :");'는 ModelState의 오류를 표시합니다. 그 대답이 렌더링 된 것으로 업데이트되었습니다. – Leniency

관련 문제