Прежде всего, я должен сказать, что я новичок в MVC4 и разрабатываю это приложение и одновременно изучая MVC4 :).MVC4: Отправка дочернего элемента Частичные значения представления в контроллер?
В этом приложении, Ниже родитель вид, где 3 частичные виды визуализируются также есть одна кнопка:
[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>
Частичное View1 (он содержит DropDownList):
@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-страницы вашей страницы, и вы увидите, как структурирована форма и входы (как обычная одиночная форма с большим количеством полей). ** Одна из проблем заключается в том, что вы размещаете формы на частичных представлениях, когда вам, вероятно, нужна одна форма в родительском объекте. ** Большая часть из них будет привязываться к полученной модели 'as-is', поскольку вы правильно используете индексацию для массивов. Пожалуйста, покажите свой код контроллера. –
Привет TrueBlueAussie Я добавил код контроллера. – user3240292