У меня есть страница с информацией, я хочу добавить туда список (в виде таблицы) в частичном представлении. Пользователь должен иметь возможность сортировать его, переключая радиоканал.Как показать частичный вид
Моя проблема: код работает нормально (я попытался в отдельном виде), но когда я пытаюсь переключить переключатель (они отправляют страницу на изменение и активируют второй метод, который создает новую модель в соответствии с переключателем) i получить html-код только с моего частичного представления.
Другими словами:
я хочу: HTML от view1
+ HTML из myPartial
я получаю: только HTML от myPartial
Я полагаю, проблема здесь (вызов мой myPartial
):
@Html.Action("_ShowEmployeeProjects", "Employee")
Но когда я пытаюсь это использовать:
@Html.Partial("Partial/_ShowEmployeeProjects")
Я получаю t его:
Модели элемент передается в словарь типа
«BTGHRM.Models.EmployeeJobDataViewModel», но этот словарь требует модельного элемента типа «System.Collections.Generic.List`1 [ BTGHRM.Models.EmployeeProjectHistoryModel].
Мои контроллеры Код:
public PartialViewResult _ShowEmployeeProjects()
{
int EmpId = HRMSession.SelectedEmployeeId;
using (var db = new HRMEntities())
{
List<EmployeeProjectHistoryModel> list = (from t1 in db.ProjectWorkers
join t2 in db.Projects
on t1.ProjectId equals t2.ProjectId
where (t1.WorkerId == EmpId && t1.IsActive == true)
select new EmployeeProjectHistoryModel()
{
ProjectName = t2.ProjectName,
Activity = t1.Activity,
StartDate = t1.StartDate,
EndDate = t1.EndDate
}).ToList();
return PartialView("Partial/_ShowEmployeeProjects",list);
}
}
[HttpPost]
public PartialViewResult _ShowEmployeeProjects(string ActiveOnlySelect)
{
int EmpId = HRMSession.SelectedEmployeeId;
List<EmployeeProjectHistoryModel> list;
using (var db = new HRMEntities())
{
if (ActiveOnlySelect.Equals("both"))
{
list = (from t1 in db.ProjectWorkers
join t2 in db.Projects
on t1.ProjectId equals t2.ProjectId
where (t1.WorkerId == EmpId)
select new EmployeeProjectHistoryModel()
{
ProjectName = t2.ProjectName,
Activity = t1.Activity,
StartDate = t1.StartDate,
EndDate = t1.EndDate
}).ToList();
list.OrderBy(x => x.StartDate);
}
else
{
list = (from t1 in db.ProjectWorkers
join t2 in db.Projects
on t1.ProjectId equals t2.ProjectId
where (t1.WorkerId == EmpId && t1.IsActive == true)
select new EmployeeProjectHistoryModel()
{
ProjectName = t2.ProjectName,
Activity = t1.Activity,
StartDate = t1.StartDate,
EndDate = t1.EndDate
}).ToList();
list.OrderBy(x => x.StartDate);
}
}
return PartialView("Partial/_ShowEmployeeProjects", list);
}
Мой частичный:
@model List<BTGHRM.Models.EmployeeProjectHistoryModel>
@using (Html.BeginForm("_ShowEmployeeProjects", "Employee", FormMethod.Post, new { type = "main" }))
{
<table>
<tr>
<td>
@Html.RadioButton("ActiveOnlySelect", "activeonly", true, new { id = "ActiveOnlySelect0", onchange = "this.form.submit();" })
<label for="ActiveOnlySelect0">@Resources.Localization.show_only_actual</label>
</td>
</tr>
<tr>
<td>
@Html.RadioButton("ActiveOnlySelect", "both", new { id = "ActiveOnlySelect1", onchange = "this.form.submit();" })
<label for="ActiveOnlySelect1">@Resources.Localization.show_all_data</label>
</td>
</tr>
</table>
}
@{
WebGrid grid = new WebGrid(Model, canSort: false, rowsPerPage: 15);
if (Model.Any())
{
@grid.GetHtml(
tableStyle: "table",
headerStyle: "table_HeaderStyle",
footerStyle: "table_PagerStyle",
rowStyle: "table_RowStyle",
alternatingRowStyle: "table_AlternatingRowStyle",
selectedRowStyle: "table_SelectedRowStyle",
columns: grid.Columns(
grid.Column("ProjectName", Resources.Localization.project, style: "p30"),
grid.Column("Activity", Resources.Localization.activity, style: "p30"),
grid.Column("StartDate", Resources.Localization.start_date, format: @<text>
@if (item.StartDate != null)
{
<span class="display-mode"><label id="StartDateLabel">@item.StartDate.ToShortDateString()</label></span>
@Html.Hidden("Model.StartDate", (object)item.StartDate.ToShortDateString())
}
else
{
<span> </span>
}</text>, style: "p10"),
grid.Column("EndDate", Resources.Localization.end_date, format: @<text>
@if (item.EndDate != null)
{
<span class="display-mode"><label id="EndDateLabel">@item.EndDate.ToShortDateString()</label></span>
@Html.Hidden("Model.EndDate", (object)item.EndDate.ToShortDateString())
}
else
{
<span> </span>
}</text>, style: "p10")
)
)
}
}
Извините за беспорядочное объяснение. –
Добавьте свой код частичного просмотра, возможно, вы проезжаете модель вместо списка –
@Div В этом случае это не будет работать в отдельном представлении, но okey - опубликовано) –