우선이 말을해야합니다. MVC4를 처음 사용하고이 앱을 개발하고 MVC4를 동시에 학습합니다. :) (가 드롭 다운리스트를 포함)MVC4 : 자식에게 부분 뷰 값을 컨트롤러로 보내시겠습니까?
[code]
<td id="track">@Html.Partial("_Track",Model)</td><br>
<td id="tech">
<div id="Technologies"> @Html.Partial("_Technology",Model)
</div></td></tr>
..
[some code]
..
<td class="subtopic">
<div class="subtopiclist" id="subque">@Html.Partial("_Subtopics",Model)</div><br>
<input type="Submit" value="Fetch Interview Questions" name="Fetch" id="Fetch" />
</td>
부분 뷰 1 :이 앱
는 아래 3 부분 뷰는 버튼 하나가 렌더링되는 상위 뷰이다@model MvcApplication3.Models.CommonWrapper
@using (Ajax.BeginForm("SelectTrack", "Home", new AjaxOptions { UpdateTargetId = "Technologies" }))
{
@Html.DropDownListFor(
m=>m.SelectedTrackId,
new SelectList(Model.track, "TrackId", "TrackName"),
string.Empty
)
}
<script type="text/javascript">
$('#SelectedTrackId').change(function() {
$(this).parents('form').submit();
});
</script>
Parital View2 (드롭 다운 목록 포함) :
@model MvcApplication3.Models.CommonWrapper
@if (Model.tech != null && Model.tech.Count() > 0)
{
using (Ajax.BeginForm("SelectTechnology", "Home", new AjaxOptions { UpdateTargetId = "subque" }))
{
@Html.HiddenFor(m => m.SelectedTrackId)
@Html.DropDownListFor(
m => m.SelectedTechId,
new SelectList(Model.tech, "TechId", "TechName"),
string.Empty
)
}
}
<script type="text/javascript">
$(document).on('change', '#SelectedTechId', function() {
$(this).parents('form').submit();
});
</script>
부분보기 3 (이것은 여러 확인란을 포함) :
는@if (Model.subtopic != null && Model.subtopic.Count() > 0)
{
<table>
@for (int i = 0; i < Model.subtopic.Count; i++)
{
<tr><td>
@Html.CheckBoxFor(m => m.subtopic[i].IsSelected, new { id = "subTopic_" + i })
@Html.HiddenFor(m => m.subtopic[i].SubtopicName)
@Html.DisplayFor(m => m.subtopic[i].SubtopicName)
<td>
</tr>
}
</table>
}
이제 부모 뷰에서, 나는이 세 부분 views.Also의 값을 가져 싶어, 나는 컨트롤러에이 가져온 값을 보내야합니다.
이 작업을 수행하는 방법? 아무도 이걸 좀 도와주세요. 사전에
감사
추가 컨트롤러 코드 :
[HttpPost]
public ActionResult SelectTrack(int? selectedTrackId)
{
CommonWrapper wrapper = new CommonWrapper();
wrapper.tech = new List<TechModel>();
if (selectedTrackId.HasValue)
{
wrapper.tech = (from s in CommonWrapper.GetTechnology()
where s.TrackId == selectedTrackId
orderby s.TechName
select s).ToList();
}
return PartialView("_Technology", wrapper);
}
[HttpPost]
public ActionResult SelectTechnology(int? selectedTechId)
{
CommonWrapper wrapper = new CommonWrapper();
wrapper.subtopic = new List<SubtopicsModel>();
if (selectedTechId.HasValue)
{
wrapper.subtopic = (from s in CommonWrapper.GetSubtopics()
where s.TechId == selectedTechId
orderby s.SubtopicName
select s).ToList();
}
return PartialView("_Subtopics", wrapper);
}
없음 마법 (단지 다소 가려진)입니다. 간단히 출력 HTML 페이지를 보면 폼과 입력이 어떻게 구조화되는지 알 수 있습니다 (많은 필드가있는 일반적인 단일 폼처럼). ** 하나의 문제는 당신이 부모에서 단일 폼을 원할 때 부분 뷰에 폼을 중첩하는 것입니다. ** 대부분은 배열에 대해 올바르게 인덱싱을 사용함에 따라받은 모델에 '있는 그대로'바인딩됩니다. 컨트롤러 코드를 보여주십시오. –
안녕하세요 TrueBlueAussie 컨트롤러 코드를 추가했습니다. – user3240292