2013-07-02 3 views
1

안녕하세요. 날짜가 필요한 보고서 모델이 있습니다. 그는 오늘, 어제 또는 날짜 범위 일 수 있습니다.모델을 라디오 버튼에 바인딩

public class DateModel 
{   
    public bool Today { get; set; } 
    public bool Yesterday { get; set; } 
    public bool DateRange { get; set; } 
    public DateTime StartDate { get; set; } 
    public DateTime EndDate { get; set; } 
} 

이 모델은보기에 바인딩됩니다. Today, Yesterday, DateRange 및 시작 및 종료 날짜 텍스트 상자의 라디오 단추.

<tr> 
    <td> 
     @Html.RadioButton("SelectedDate", "Yes", true, new { postData= "Today" }) Today 
    </td> 
</tr> 
<tr> 
    <td> 
     @Html.RadioButton("SelectedDate", "No", false, new { postData= "Yesterday" }) Yesterday 
    </td> 
</tr>  
<tr> 
    <td> 
     @Html.RadioButton("SelectedDate", "No", false, new { postData= "CallDateRange" }) Call Date Range 
    </td> 
</tr> 

보기가 다시 게시되면 어떻게 라디오 버튼을 선택할 수 있습니까?

+0

컨트롤러에

@model DateModel @Html.BeginForm("ProcessForm") { @* Populate radio *@ @Html.RadioButtonFor(x => x.DateType , DateType.Today) Today @Html.RadioButtonFor(x => x.DateType , DateType.Yesterday) Yesterday @Html.RadioButtonFor(x => x.DateType , DateType.DateRange) DateRange @* Range *@ @Html.TextBoxFor(x => x.StartDate) Start date @Html.TextBoxFor(x => x.EndDate ) End date <input type="submit" /> } 

패스 모델 라디오 버튼을 다시 렌더링하고 뷰가 바인딩되는 방식을 보여줍니다. 라디오 버튼 영역으로 소식을 수정할 수 있습니까? –

+0

@StevenVondruska가 업데이트되었습니다. –

답변

10

코드를 보면 전반적으로 더 좋은 방법 일 수 있습니다. 당신이 사용하는 바인딩 것을보기를 업데이트하는 열거

public class DateModel 
{   
    public DateEnum SelectedDate { get; set; } 
    public DateTime StartDate { get; set; } 
    public DateTime EndDate { get; set; } 
} 

마지막을 사용하는 그런 다음 DateModel을 수정

public enum DateEnum { 
    Today, 
    Yesterday, 
    DateRange 
} 

: 첫째, 당신이 사용할 수있는 라디오 버튼 유형/값의리스트를 작성 열거 양식 제출에 다음 RadioButtonFor()

<tr> 
    <td> 
     @Html.RadioButtonFor(x => x.SelectedDate, DateEnum.Today) Today 
    </td> 
</tr> 
<tr> 
    <td> 
     @Html.RadioButtonFor(x => x.SelectedDate, DateEnum.Yesterday) Yesterday 
    </td> 
</tr>  
<tr> 
    <td> 
     @Html.RadioButtonFor(x => x.SelectedDate, DateEnum.DateRange) Call Date Range 
    </td> 
</tr> 

를 사용하는 동안, 당신은 결정하기 위해 SelectedDate 볼 것이다 라디오하지만, 사용자가 선택한 톤.

public enum DateType { 
    Today, 
    Yesterday, 
    DateRange 
} 

public class DateModel 
{   
    public DateType DateType { get; set; } 
    public DateTime StartDate { get; set; } 
    public DateTime EndDate { get; set; } 
} 

을 그리고보기에서 사용 :

+0

감사합니다. selectedDate 값은 항상 DateRange입니까? 이것에 대한 이유가 있습니까? 나는 어디로 잘못 갔는가? 감사합니다 –

+0

나는 코드와 함께 내 컴퓨터에 작은 테스트 프로젝트를 설치하고 작동합니다. 브라우저에서 개발자 도구를 사용하여 브라우저에서 게시되는 내용이나 브라우저에서 응용 프로그램에보고하는 내용을 확인하는 피 들러를 살펴 보겠습니다. 또한 같은 이름/값을 가진 다른 양식 요소가 페이지에 없는지 확인하십시오. –

+0

스티브에게 감사드립니다. 이 구문을 사용하여 이름을 어떻게 바꿀 수 있습니까? –

2

이 같은 모델을 수정할 수 있습니다 '이 크게 방법에 따라한다

public ActionResult ProcessForm(DateModel model) { // here you get model from form 
    // .. 
} 
관련 문제