2011-12-21 3 views
1

EditorFor() HTML 도우미에 대한 ID를 설정하는 방법 프레임 워크에서 생성 된 ID를 오버라이드하는 데이 메서드를 사용했습니다.
@Html.EditorFor(model => model.cost, new { id = "checkCost" })
그러나 불행히도 id는 변경되지 않습니다. 즉
컨트롤러 동작시에
string d = Request.Form["checkCost"];
을 사용하면 null 값으로 채워지는 문자열입니다.
WHY ?? 또한 TextBoxFor로 EditorFor을 대체하지만 아무것도는 또한 컨트롤러가
asp.net에서 MVC3

<td > 
     @Html.DropDownList("check_master", "--select package--") 
    </td> 
    <td > 
     @Html.EditorFor(model => model.check_name) 
     @Html.ValidationMessageFor(model => model.check_name) 
    </td> 
    <td > 
     @Html.EditorFor(model => model.cost, new { id ="checkCost" }) 
     @Html.ValidationMessageFor(model => model.cost) 
    </td> 



업데이트 ID로 비용이 소요 변경되지 :

  • 이 내 부분보기 내 주요이다 (렌더링을 partial from ajax.actionLink) 또한 EditorFor (model => mode.cost)를 보유합니다.
  • 부분 뷰는 Check_master 테이블과 주 화면에 강력하게 입력됩니다. w는 package_master에 강력하게 입력됩니다. entitySet은 동일한 이름 속성 즉 "COST"를 보유합니다. 둘째 부분 및 기본보기 모두 EditorFor "cost"를 보유합니다.

  • 과 같은 check_master 속성의 이름을 변경하려고했습니다.
  • [Column ("check_cost")]

public Nullable cost {get; 세트; }
하지만이 속성 CheckCost 및 PackageCost를 단락 지을 거기에 그런 식으로 2 개보기 모델 만들기

model.something 
+0

왜 당신이 원하는 않습니다 이드를 바꾸려면? 기본 ID를 사용하면 기본 모델 바인딩이 활성화됩니다. 그것은 Request.Form [ "cost"]가 속성 비용 – heads5150

+0

에 바인딩됩니다. b'coz 이것은 내 부분보기이며 내 기본보기 (ajax.actionLink에서 부분 렌더링)에도 EditorFor (model => mode.cost) – RollerCosta

+0

이유 동일한보기에서 동일한 속성에 대해 두 개의 텍스트 상자가 있습니까? 본질적으로 동일한 속성을 편집 할 수있는 장소가 두 곳 있습니다. 텍스트 상자가 부분보기에 있으면 기본보기에서 꺼내십시오. – heads5150

답변

0

처럼 참조하면서, 즉 속성 naem이 변경되지 작동하지 않는 이유를 잘 모릅니다 :

public class CheckViewModel{ 
    public string CheckCost{get;set;} 
} 

public class PackageViewModel{ 
    public string PackageCost{get;set;} 
} 

이를 방법으로 충돌을 피하십시오.

+0

감사합니다. 내 질문 된 맥락 – RollerCosta

0

구체적으로 묻는 질문에 대답하려면 다음을 수행하십시오

@Html.EditorFor(model => model.cost, new { @id = "checkCost" }) 

주를 약간 (하지만 중요한) 차이를 ... 새로운 {@id = "checkCost을"})