ASP MVC를 사용하는 webapp에서 작업하고 있습니다. 나는 사용자의 데이터를 편집하기위한 페이지를 만들고있다 (모델 USER, ModifyUser보기).사용자 정의 ViewModel을 통해 모델의 메타 데이터를 검증하는 방법은 무엇입니까?
나는이 방식으로 검증 된 모델이 있습니다
[MetadataType(typeof(USERS_Metadata))]
public partial class USER
{
public class USERS_Metadata
{
[Required(ErrorMessage = "FALTA NOMBRE")]
[StringLength(30, ErrorMessage = "Nombre entre 3 y 30 caracteres", MinimumLength = 3)]
[RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$", ErrorMessage = "Error en el formato del nombre.")]
public string NAME { get; set; }
그때 자동적으로 사용자 입력의 유효성을 확인 뷰 사용
<div class="editor-label">
<%: Html.LabelFor(model => model.SURNAME) %>
</div>
<div class="editor-field">
<%: Html.EditorFor(model => model.SURNAME) %>
<%: Html.ValidationMessageFor(model => model.SURNAME) %>
</div>
문제는 내보기도 액세스 거 필요입니다 USERCATEGORY와 같은 자체 모델을 가진 일부 엔티티는 강하게 유형이 지정된 뷰를 조금 더 불편하게 만듭니다.
덧붙여서, 더 중요 할 수도 있습니다. 내보기가 사용자의 세션 ID와 같은 속성을 처리하고 심지어 알지 못하도록하고 싶지 않습니다. 현재이 기능을 처리하고 있습니다. (그리고 나는 그것을 싫어합니다.) :
<%: Html.HiddenFor(model => model.SESSIONID) %>
내가 완전히 착각하지 않는 한, 가장 정상적인 옵션은 사용자 지정 ViewModel을 만드는 것입니다. 내 ModifyUserViewModel을 빌드하여 내 뷰에서 필요로하는 USER의 필드와 일치시키고 다른 모델의 일부 필드를 추가하기로 결정했습니다. 그러나 USER에서 메타 데이터를 전파하는 방법을 모릅니다. 필드 검증을 위해 새로운 ViewModel에 전달한다. 이 메타 데이터는 데이터베이스에서 자동으로 생성되며이를 복사하면 내게도 작동합니다.
ViewModel을 사용하여 현재 수행중인 것처럼 뷰에서 유효성을 검사 할 수있는 가장 정교하고 유지 보수가 쉬운 가장 쉬운 방법은 무엇입니까?
왜 세션 ID에 숨겨진 것을 첨부해야합니까? 어디에서나 사용하고 있습니까? –
제출하지 않으면 sessionId가 null 일 수 없다는 불만을 제기합니다 (전체 모델의 유효성 검사를 시도 함). – jesusiniesta