MVC4로 연습하고 있습니다. 내 연습 프로젝트는 등록 된 사용자와 익명 사용자가 모두 의견을 게시 할 수있게 해주는 단순한 종류의 설명 게시판입니다.미리로드 및 비활성화 EditorFor
현재 등록 된 사용자도 작은 이름 + 메시지 양식을 제출할 때 원하는 이름을 입력 할 수 있도록 코드를 설정했습니다. 내가 원하는 것은 로그인 정보에서 가져온 사용자 이름을 사용하는 대신 등록 된 사용자에 대해이 동작을 비활성화하는 것입니다.
등록 된 사용자는 이름 상자에 이미 사용자 이름이로드되어 있고 편집 할 수없는 것이 좋습니다. 이름이나 메시지가 비어 있지 않도록 양식이 유효성 검사를 수행 할 때이 사용자 이름이 사용됩니다. Model.PosterName 그냥 문자열로 사용자의 사용자 이름을 보유하고
<div class="editor-label">
@Html.LabelFor(x => x.comment.Name)
</div>
<div class="editor-field">
@Html.ValidationMessageFor(x => x.comment.Name)
<br />
@if (User.Identity.Name=="") {
@Html.EditorFor(x => x.comment.Name)
} else {
@Html.EditorFor(x => x.comment.Name, Model.PosterName)
}
</div>
참고 :
다음은 뷰에서 내 코드입니다. null 또는 비어 있지 않습니다.
기본 옵션으로 Model.PosterName을 사용하도록 두 번째 EditorFor 라인을 편집하려면 어떻게해야합니까? 편집 할 수없는 동작 대신 DisplayFor를 사용해야할까요?
위의 코드는 EditorFor에 값을 입력하지 않습니다.
감사합니다.
답변 해 주셔서 감사합니다. 내가 앞서 가서 사용자가 제안한대로 컨트롤러의 주석 모델에 사용자 이름을 입력 했으므로 제대로 작동합니다. 한 가지 사실은 뷰의 코드 줄이 텍스트가 잠겨 있음에도 불구하고 필드를 비어있는 것으로 간주하도록 유효성 검사를 수행한다는 것입니다. 그러나 new {@readonly = "readonly"}는 트릭을 수행하지만 코드에서 커서 아이콘을 비활성화하는 것이 좋습니다. – Newman14922013