2012-03-13 2 views
3

자바 스크립트 경고를 포함하는 부분보기를 반환하는 나쁜 디자인이 난 경우에 _error 부분보기를 다음의 조치 방법을 반환 한 그것이인가 : -는 예외가 발생한 경우에만 내 asp.net에서 MVC

[AcceptVerbs(HttpVerbs.Post)] 
public PartialViewResult Register(string id, int classid) { 
    try 
    { 
     Thread.Sleep(3000); 
     User user = r.FindUser(id); 
     Users_Classes uc = new Users_Classes(); 
     uc.AddedDate = DateTime.Now; 
     uc.ClassID = classid; 
     user.Users_Classes.Add(uc); 
     r.Save(); 
     ViewBag.classid = classid; 
     return PartialView("_usersearch2", uc); 
    } 
    catch (DataException ex) 
    { 
     return PartialView("_error"); 
    } 

다음과 같은 _error 부분보기 : -

<script type="text/javascript"> 
    alert('The user might have been already Assinged, Search Again to get the latest users'); 
</script> 

위의 접근 방식은 잘 작동하지만, 그것은 단지 경고를 표시하는 부분 뷰를 반환하는 나쁜 디자인을 고려합니까? 이렇게하는 더 좋은 방법이 있습니까?

답변

0

인라인 js를 반환하는 대신 js 라이브러리 내의 클라이언트 측에 오류 처리 코드가 있어야합니다. 구멍 js를 반환하는 대신 메시지 만 반환합니다.

3

문제는 이제 사용자 인터페이스에 구현을 묶는 것입니다. 컨트롤러가 갑자기 오류 메시지를 클라이언트에 표시하는 방법을 결정합니다.

알림에서 텍스트 입력 주위에 빨간색 테두리가 표시되도록 변경하려면 옆에 설명이 표시됩니다.

무언가를 표시하는 방법을 결정하는 것은 귀하의 판단에 달려 있습니다. 컨트롤러는 상태 코드 만 반환해야하므로보기에서 수행 할 작업을 결정해야합니다.

+0

답장을 보내 주셔서 감사합니다. 유효성 검사가 필요, 길이 또는 "원격"데이터 주석을 사용하여 검사 할 수있는 경우와 같이보기 자체에서 확인할 수 있다면 동의합니다. 그러나 제 경우에는 서버가 예외를 반환하지 않는 한 뷰가 현재 뷰에 표시된 객체가 다른 시스템 사용자에 의해 추가되었는지보기가 어떻게 알 수 있습니까? –

+0

클라이언트에서 부분 뷰를 사용하여 무엇을하고 있습니까? 일부 Javascript를 사용하여 div에 넣거나 무엇인가? 반환 유형을 ActionResult로 변경 한 다음 HasErrors, ErrorMessage 및 PartialViewHtml 속성을 사용하여 ViewModel을 반환하면 어떻게됩니까? 그런 다음 자바 스크립트에서 오류가 있는지 확인한 다음 오류 메시지를 표시하거나 부분보기를 표시하도록 선택할 수 있습니다. –

+0

하지만 내 경우에는 어떻게 자바 스크립트 경고를 반환 할 수있는 예외가 발생했습니다 내 구현을 사용자 인터페이스에 묶는 것 이외에 –

0

일반적으로 나는 그렇다고 말하고 싶습니다. 하지만, 때로는 나쁜 디자인은 그냥 의사가 주문한 것입니다.) 때로는 나쁜 디자인은 의사가 주문한 것일뿐입니다.컨트롤러 인스턴스 메서드는 매우 제한된 경우에 제 컨트롤러에서 실행 가능한 자바 스크립트를 반환하는 데 사용됩니다. 바로 "방법은 가능하지 않습니다 :

[AcceptVerbs(HttpVerbs.Post)] 
public PartialViewResult Register(string id, int classid) 
{ 
    try 
    { 
     ... stuff 
    } 
    catch (DataException ex) 
    { 
     return Javascript("alert('The user might have been already Assinged, Search Again to get the latest users');"); 
    } 
} 

이런 일이 존재한다는 사실은 나에게 나는 아마 생각하는 잘못 사용하고하지 않는 한 나는 완전히 .. 법을 위반하고 있지 않다 위안을 제공합니다.

관련 문제