을 사용 Html.TextBoxFor
하여 이름 속성을 재정의하는 것이 가능 합니까?
나는 성공하지 못했습니다. 클라이언트 측 유효성 검사가 작동하려면 TextBoxFor를 사용해야하지만, 텍스트 상자의 이름이 생성 된 것과 달라야하는 이유는 없습니다.
나는 다음을 시도했다 :
@Html.TextBoxFor(x => x.Data, new { name = Model.Key + "_Data", id = Model.Key + "_Data" })
ID에는 작동하지만 이름은 작동하지 않습니다. 이게 가능해?
업데이트 : TextBoxFor의 코드를 살펴 봅니다. 쉬운 방법이없는 것 같습니다. 누군가가 나를 잘못 증명할 수 있기를 바랍니다.
답변
Rob, 실제로 훨씬 더 간단한 방법이 있습니다. name 대신 Name을 사용 하십시오 .
@Html.TextBoxFor(x => x.Data, new { Name = Model.Key + "_Data", id = Model.Key + "_Data" })
답변
이름에 접두사를 적용하기 위해 이것을 묻는 것입니까? 그렇다면 ViewData.TemplateInfo.HtmlFieldPrefix
컨트롤러에서 설정 하여 이를 수행 할 수 있습니다 .
나는 Brad Wilson의 블로그 에서 이것에 대해 많은 것을 배웠습니다 .
답변
EditorFor에는 name
속성을 매개 변수로 제공 할 수있는 오버로드가 있습니다 .
@Html.EditorFor(expression, null, name)
답변
시도 EditorFor을 . 속성 유형이 문자열이 아닌 경우에도 텍스트 상자가 렌더링되도록하려면 문자열을 템플릿 이름으로 전달할 수 있습니다. 속성이 이미 문자열 인 경우 templatename
텍스트 상자를 렌더링하는 데 명시 적으로 필요하지 않으므로 null
. id 매개 변수가 명시 적으로 필요하지 않으며 요소 이름에서 유추됩니다. 그리고 모든 유효성 검사는 EditorFor에서 여전히 활성화되어 있습니다.
@Html.EditorFor(x => x.Data, "string", Model.Key + "_Data")
답변
ben의 대답은 Html.Raw로 포장해야한다는 점을 제외하고는 내가 찾던 것을 얻었습니다.
@Html.Raw(Html.TextBoxFor(x => x.Data).ToString().Replace("Data", "NewData"))
답변
전화 Microsoft GOTCHA입니다
이름을 대문자로 사용하십시오.
@Html.TextBoxFor(m => m.Reply.Answer, new {@Name="Whatyouwant"})
답변
약간 “unpretty”=), 시도해보십시오 :
@Html.TextBoxFor(x => x.Data).ToString().Replace("Data", "NewData")