n 페이지가 있다고 가정하면 각 페이지는 동일한 종류의 모델을 공유하지만 특정 페이지에 액세스하려면 해당 모델이 특정 상태 여야합니다.ASP.NET MVC의 여러 홉에서 오류 메시지 보존
사용자가 URL을 입력하여 m 페이지로 이동하지만이 페이지에 액세스 할 수없는 경우 컨트롤러는 TempData의 오류 컬렉션에 오류 메시지를 추가 한 다음 페이지 m-1로 리디렉션합니다.
페이지 m-1에도 액세스 할 수없는 경우 문제가 발생합니다. TempData에 동일한 키가있는 같은 컬렉션에 메시지를 추가하면 페이지 m-2에 대한 요청이 진행되기 전에 TempData에서 제거되므로 m-2 페이지에 메시지가 표시되지 않습니다.
우리는 여러 개의 오류 키가있는 해결책을 상상할 수 있습니다. 오류를 추가하거나 오류가 발생할 때마다 각 키를 차례로 시도하지만 누구에게 더 좋은 아이디어가 있습니까? (I 이론에 내가 똑바로로 리디렉션 올바른 페이지를 해결할 수 있다는 것을 알고 있지만, 재 작업을 많이 걸릴 것입니다 그리고 난 시간이별로 없어!)
편집 :
이것은 제가 생각하고있는 일종의 것입니다 :
protected void AddError(string error)
{
int keyCounter;
var errors = GetErrors(out keyCounter);
errors.Add(error);
TempData.Remove(GetKey(keyCounter + 1));
TempData[GetKey(keyCounter + 1)] = errors;
}
protected List<string> GetErrors()
{
int jnk;
return GetErrors(out jnk);
}
private string GetKey(int i)
{
return string.Format("ErrorKey:{0}", i);
}
private List<string> GetErrors(out int keyCounter)
{
keyCounter = 0;
List<string> errors = null;
for (int ii = 0; ii < MaxErrorKeyCounter; ii++)
{
string tryKey = GetKey(ii);
if (TempData.ContainsKey(tryKey))
{
keyCounter = ii;
errors = (List<string>)TempData[tryKey];
}
}
if (errors == null)
errors = new List<string>();
return errors;
}
그냥 좋지 않습니다. 내 View Model에 넣은 후 수동으로 비워야합니다. 나는 결국 내가 어떤 페이지를 배트에서 바로 리디렉션 할 수 있는지 알게되었다. – Gaz