У меня есть основной вид с большим количеством раскрывающихся списков в качестве фильтров.
Эти фильтры используются в контроллере для извлечения данных из базы данных (сложный запрос).
После получения данных я хочу обновить частичное представление с помощью диаграмм (у меня также есть несколько частичных представлений).
Вот упрощенный пример моей структуры:
МОДЕЛЬ
public class MainViewModel
{
public FilterAModel FilterAModel { get; set; }
public FilterBModel FilterBModel { get; set; }
}
public class FilterAModel
{
public IEnumerable<int> SelectedItems { get; set; }
public IEnumerable<SelectListItem> AllItems { get; set; }
}
public class FilterBModel
{
public IEnumerable<int> SelectedItems { get; set; }
public IEnumerable<SelectListItem> AllItems { get; set; }
}
VIEW
<div>
@using (Html.BeginForm("GetDBValues", "Home",FormMethod.Post))
{
@Html.DropDownListFor(a => a.FilterAModel.SelectedItems,Model.FilterAModel.AllItems, new { multiple = "multiple" })
@Html.DropDownListFor(b => b.FilterBModel.SelectedItems, Model.FilterBModel.AllItems, new { multiple = "multiple" })
<input id="RegisterBtn" type="submit" />
}
<div id="testDiv">
@{Html.RenderPartial("_PartialView", Model);}
</div>
</div>
ЧАСТИЧНЫЙ ВИД
@model MainViewModel
<div>@Html.DisplayFor(m=>m.FilterAModel.SelectedItems)</div>
<div>@Html.DisplayFor(m => m.FilterBModel.SelectedItems)</div>
И КОНТРОЛЛЕР
public ActionResult Index()
{
Entities context = new Entities();
MainViewModel model = new MainViewModel();
FilterAModel modelA = new FilterAModel();
modelA.AllItems=new MultiSelectList(context.FilterATable,"Id","Text");
FilterBModel modelB = new FilterBModel();
modelB.AllItems = new MultiSelectList(context.FilterBTable, "Id", "Text");
model.FilterAModel = modelA;
model.FilterBModel = modelB;
return View(model);
}
[HttpPost]
public ActionResult GetDBValues(MainViewModel model)
{
//Code here to retrieve values from DB
//...
return PartialView("_PartialView",model);
}
В этом примере я просто хочу обновить частичное представление без перезагрузки всего представления и сохранить выбор пользователя между вызовами.
Я хотел бы знать, возможно ли достичь этого без JQuery ...
Если нет, я могу использовать этот тип сценария, но как передать модель параметризованному действию GetDBValues
контроллера?
SCRIPT
<script type="text/javascript">
$(function(){
$('#RegisterBtn').click(function () {
$("#testDiv").load('@Url.Action("GetDBValues", "Home")')
});
});
</script>
Большое спасибо за вашу помощь, это мое первое приложение MVC ...