2014-07-09 3 views
5

으로 설정하십시오.는 모두 nameid 속성 앞에 붙습니다.ID는 HtmlFieldPrefix로 설정하고 이름은

접두사가 id이고 접두사를 name으로 남겨두면 궁금합니다.

시나리오는 다음과 같습니다. 페이지에 AJAX가 부분보기를 여러 번로드하고 있습니다. 사용중인 JavaScript 라이브러리는 id을 사용해야하지만 양식을 게시 할 수도 있습니다 (따라서 name은 서버 모델과 일치해야합니다).

우리의 현재 해결책은 부분 뷰가로드 될 때마다 고유 번호를 생성하고, 설정된 HtmlFieldPrefix (n 생성 된 번호이다) items[n] 및 우리 만 필요 items의 배열 (받을 우리 행동 하나를 받으려면). 이는 모델 바인더로 구문 분석 할 수있는 세계적으로 유일한 idname을 제공합니다.

하지만보기 흉하게 들립니다. 어떤 제안?

답변

2

나는 당신과 같은 문제가있었습니다.

@{ ViewData.TemplateInfo.HtmlFieldPrefix = "Prefix"; } 
@using(Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 
    @Html.TextBoxFor(m => m.MerchantAccount.MerchantName, new { maxlength = 29, size = 35 })<br /> 
    @Html.ValidationMessageFor(m => m.MerchantAccount.MerchantName) 
} 

첫째, 저의 나쁜 생각은 페이지로드시 jQuery를 사용하여 모든 이름에 원하지 않는 접두어를 제거하는 것입니다. 당신이 (메서드 서명에 바인드 접두사를 지정하여) 제거하기 위해서 무엇을 접두사 상태 컨트롤러, https://stackoverflow.com/a/1318342/4946681

기본적으로 그것은을 위해 이루어집니다 : 우리가 실제로 결국 무엇

$('[id*="Prefix_']).each(function(i, e) {...

여기에서 제안 된 일 당신이 자동으로.

이제 ID 접두사 케이크를 먹을 수 있고 먹을 수도 있습니다.