저는이 문제를 해결하기 위해 머리를 짚고 있습니다. ASP.NET의 WebSite를 기반으로하는 레거시 응용 프로그램이 있습니다. 나는 MVC를 추가 할 수 있도록 적절한 것들을 추가했고, 대부분 올바르게 작동한다.ASP.NET MVC3 TextBoxFor, EditorFor, ValidateFor 렌더링하지 않음
Html.BeginForm 내에 캡슐화 된 양식 태그가있는 면도날 뷰가 있습니다. 또한 문자열 용 사용자 정의 템플릿 편집기를 만들었습니다. 내가 겪고있는 문제는 일반 텍스트 상자, editorfor 또는 ValidateFor, ValidationSummary를 렌더링하려고 할 때 마크 업이 생성되지 않는다는 것입니다. 내 사용자 정의 템플릿이 실행되지만 정상적인 HtmlHelper는 작동하지 않는 것 같습니다.
여기 내보기 (이 부분도 있어요) 내 사용자 지정 템플릿에서
@model L1.Web.UI.Infrastructure.SectionWrapper<L1.Web.ViewModel.PersonInfoViewModel>
<div class="section">
@using (Html.BeginForm())
{
<div class="pad_10" data-bind="with: sections['PersonInfo']">
<div data-bind="with: data">
@Html.ValidationSummary(true)
<table class="full-table form-horizontal">
<tbody>
<tr>
<td width="30%" class="dotted-border-right">
<!-- This kinda work -->
@Html.EditorFor(m => m.SectionData.Data.LastName,
"modelTemplateString",
new {SectionName = "PersonInfo"})
!-- This doesn't render anything -->
@Html.EditorFor(m => m.SectionData.Data.LastName)
, 난 작동 일반 HTML을 렌더링하고 있습니다. 내 사용자 지정 템플릿에서 EditorFor를 수행하면 부분적으로 작동합니다. 생성되는 유효성 검사 속성이 표시되지 않습니다. ValidateFor 또는 ValidationMessageFor 내 사용자 지정 서식 파일에있는 마크 업을 생성하지 않습니다. 여기에 (/ 공유/EditorTemplates에있는) 내 사용자 지정 템플릿의 코드
@inherits WebViewPage<string>
<div class="control-group">
<label class="control-label" for="@String.Format("input{0}", ViewData.ModelMetadata.PropertyName)" data-bind="localized: {resourceId: '@ViewData.ModelMetadata.PropertyName', resourceStore: $root}"></label>
<div class="controls">
<input id="@String.Format("input{0}", ViewData.ModelMetadata.PropertyName)" class="input-small" type="text" data-bind="visible: $root.sectionDefinitions['@ViewData["SectionName"]'].isEditing, value: @ViewData.ModelMetadata.PropertyName"/>
<a class="edit-link" data-bind="visible: $root.sectionDefinitions['@ViewData["SectionName"]'].isInReadMode">
<strong data-bind="text: @ViewData.ModelMetadata.PropertyName"></strong>
</a>
@{ Html.ValidateFor(m => m); }
</div>
가 나는 또한 항상 사용하는 것을 생각하고, 완전히 프로젝트에서 내 사용자 지정 템플릿을 제거하려는 경우에도입니다 EditorFor에서 사용자 정의 템플리트 이름을 지정하지 않습니다. 이것은 변화를 가져 오지 않았습니다. 내 프로젝트가 부분적으로 HtmlHelpers를 렌더링 할 수없는 것 같습니다.
양식 태그를 만든 후에 ViewContext.FormContext가 null이 아니며 그 부분이 잘 보입니다.
어떤 도움이나 제안이라도 대단히 감사하겠습니다.
감사
전체 이름은 modelTemplateString.cshtml입니다. 내 사용자 지정 서식 파일이 작동하지 않는 것이 문제입니다. 그것은 실제로 그것을 렌더링하고 있습니다. 작동하지 않는 것은 MVC의 기본 템플릿이 마크 업을 렌더링하지 않는다는 것입니다. – user1428857
LastName 필드가 기본 String 객체라고 가정하여 올바른가? –
네, 맞습니다. 깔끔한 것은 문자열이라도 사용자 정의 템플릿에 들어갈 때 해당 모델의 컨텍스트에서 적절한 ModelMetadata를 얻을 수 있다는 것입니다. 깔끔하지 않은 점은 ValidateFor 및 EditorFor를 사용할 수 없다는 것입니다. – user1428857