2015-01-12 4 views
3

여러 개의 html 헬퍼가 있습니다. 로그인 버튼을 클릭하면 jquery를 사용하여 user_register div를 사용할 수 없으며 모델 바인더가 제대로 바인딩 할 수있는 사용자 이름과 비밀번호를 입력 할 때 Register를 클릭하면 user_login div를 비활성화하고 user_register div를 활성화하고 세부 정보 만 입력하면 email과 firstname은 모델 바인더가 바인드 할 수 있고 username, password는 바인딩 할 수없는 것입니다. 이 becoz 나는 한 번 이상 동일한 HTML 헬퍼를 사용하고 있습니다. 어떻게 처리해야합니까? 내가 컨트롤러 당신은 당신에게 완벽한 뷰를 표시하지 않은mvc4에서 같은 이름의 여러 HTML 도우미로 작업하기

public ActionResult Index(Customer customer, string Action) 
{ 
//something here 
} 

답변

1

여기에 따르지만 가정 모든 컨트롤은 하나 개의 폼 요소 내부에서 발생하는 다음 코드를

<div class="user_login"> 
<label>Email/Username</label> 
    @Html.TextBoxFor(model => model.Email) 
    <br /> 
    <label>Password</label> 
    @Html.TextBoxFor(model => model.Password)          
    <br />  
    <div class="action_btns"> 
     <div class="one_half"><a href="#" class="btn back_btn"><i class="fa fa-angle-double-left"></i>Back</a> 
     </div> 
    <div class="one_half last"> 
     <input type="submit" style="border: none" name="action" class="btn btn_red" value="Login" /> 
     </div> 
    </div> 
    <a href="#" class="forgot_password">Forgot password?</a> 
    </div> 
    <div class="user_register"> 
    <label>Full Name</label> 
    @Html.TextBoxFor(model => model.First_Name)<br /> 
    <label>Email Address</label> 
    @Html.TextBox(model=>model.Email)<br /> 
     <label>User Name</label> 
     @Html.TextBoxFor(model => model.User_Name)<br /> 
     <label>Password</label> 
     @Html.TextBox(model=>model.Password") <br /> 
    </div> 

을 가지고, 모든 컨트롤은 다시하지 않는 한 게시 할 예정입니다 입력을 비활성화합니다. 그렇다면 name="Email"의 첫 번째 입력이 바인딩되고 두 번째 입력은 DefaultModelBinder에 의해 무시됩니다. (첫 번째 것은 숨겨져 있기 때문에 그 값은 아마도 비어있을 것입니다). 스크립트는 예를 들어, 로그인 섹션에서이 개 입력을 사용할 수 있는지 확인해야합니다

@Html.TextBoxFor(model => model.Email, new { id = "login-email" }) 

$('#login-email').prop('disabled', true); 

참고 id 속성 올바른 하나를 선택 (방지 할 수 있도록 중복 된 아이디의 어떤 잘못된 HTML은.

대안 2 별도의 양식을 만들 것입니다.

+0

감사합니다. 내가 시도 두 번째 방법이며 일했다. 또한하려고합니다 첫 번째 작업을 수행하십시오. 다시 한번 감사드립니다. – Shaik

+0

두 번째 옵션을 사용한다면 두 가지 별도의 post 메소드를 제안하고'form' 태그로 지정할 것입니다 -'@using (Html.BeginForm ("LogIn", "Account")) {'와'@using (Html.BeginForm ("등록", "계정")) {'. 하지만 실제로는 별도의 액션이고 별도의 로직을 가질 수 있기 때문에 두 개의 모델, 메소드 및 뷰가 별도로 있어야합니다 (예 : 레지스터 액션에는'[Compare]'속성이있는 ConfirmPassword 속성이 있어야합니다.) –

+0

감사합니다. 너무 친절 – Shaik

관련 문제