2014-02-19 2 views
1

기본보기 및 기본 모델이 있습니다.ASP.NET MVC 데이터가 부분 뷰에서 컨트롤러로 오지 않았습니다

public class TripUpdateTaskModel 
{ 
    public OrderTaskRecord Task { get; set; } 
} 

나는 여전히없는 연주와 연주하지만 : 내가 가진이 내부보기

같은 라인
foreach (var loadTask in Model.LoadTasks) 
{ 
    Html.RenderPartial("TripUpdateTask", new TripUpdateTaskModel { Task = loadTask }); 
} 

그래서 주요 모델에서 나는

public List<OrderTaskRecord> LoadTasks { get; set; } 

서브 모델이 있습니다 데이터를 저장하십시오. 여기에 현재와 단순한 모습입니다.

<tr>  
    <td>Actual Time:</td> 
    <td>@Html.TextBoxFor(m => m.Task.Task.ActualTime)</td> 
</tr> 

원시 HTML에서는 이러한 시간 컨트롤의 이름과 ID가 동일합니다. 그래서 나는 그것을 구하기 위해 무엇이 필요한지 알지 못합니다.

내가 다시 잘 컨트롤러에 기본보기에 입력 한 데이터를 의미하지만, 부분보기에서

나는이 같은 기본보기에 Html.BeginForm 및 필드 셋을 사용하지 :

@using (Html.BeginForm("TripUpdate", "SupplierBookingUpdate", FormMethod.Post, new { id = "SupplierBookingUpdateSave" })) 
{ 
    <fieldset> 
    .. table 
    </fieldset> 
} 
+0

당신은 어떻게 텍스트 상자의 이름을 설정하라는거야? –

+0

부분보기에서 데이터를 저장하는 방법을 묻고 싶습니다. 내가 코드에서 다시해야 할 일. 입력 된 값이 기본 모델에 저장되지 않기 때문에 – user3328720

+0

즉, 컨트롤러에 다시 들어 왔을 때? –

답변

2

오히려 개별적으로 각 텍스트 상자에 이름을 것보다, 나는 OrderTaskRecord의 컬렉션을 바인딩 추천 할 것입니다. 그렇게하면 많은 텍스트 상자와 이름에 대해 걱정할 필요가 없습니다.

여기에 Scott Hanselman에 대한 좋은 소개가 나와 있습니다.

또한 여기에 또 다른 예를 시도 할 수 있습니다 : http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

0

당신이 원하는 경우 생성 된 input에 사용자 정의 이름을 전달하여 이것을 사용하십시오. 그것은 HTML이 TextBoxFor 방법 속성을 전달합니다 물론

@Html.TextBoxFor(m => m.Task.Task.ActualTime, new { Name = "yourName") 

, 당신은 독특한를 유지하기 위해 여기에 등 카운터를 만들 수 있습니다.

당신은 양식 데이터를 가져 오는하여 컨트롤러에 나중에 추출 할 수 있습니다 :

Request.Form["yourName"]; 
+0

부분보기에서 데이터를 저장하는 방법을 묻고 싶습니다. 내가 코드에서 다시해야 할 일. 입력 된 값이 기본 모델에 저장되지 않기 때문에 – user3328720

+0

@ user3328720 : 업데이트보기 –

+0

이것이 좋은 생각입니까? 이미 컬렉션의 각 항목에 대해 4 개의 필드가 있습니다. 그리고 지금 10 항목. 이것은 40 개의 컨트롤입니다 – user3328720

관련 문제