我的要求
我需要在选择下拉列表时呈现部分视图
渲染部分视图1
@{
Html.RenderPartial("_Dashboard", new Dashboard.Web.Models.SignalDataViewModel { dData = Model.dData });
}
渲染部分视图2
@{
Html.RenderPartial("_Dashboard_Graph", new Dashboard.Web.Models.SignalDataViewModel { dData = Model.dData });
}
渲染部分视图3
@{
Html.RenderPartial("_Dashboard_Arrow", new Dashboard.Web.Models.SignalDataViewModel { dData = Model.dData });
}
渲染部分视图4
@{
Html.RenderPartial("_Dashboard_Custom", new Dashboard.Web.Models.SignalDataViewModel { dData = Model.dData });
}
我的查询
请建议我如何根据下拉列表的选择有条件地渲染部分视图(从具有相同ViewModel的部分视图列表中),同时在视图的(cshtml-parent)中获取部分视图的数据ViewModel
答案 0 :(得分:0)
通过html完成所有这些操作。我建议使用javascript。
有一个ID为
的div<div id="InterchangableView"></div>
向下拉列表中添加onChange事件,并将下拉列表的值传递给javascript函数
在函数中确定它是什么值,然后调用必要的控制器方法,例如以下
if(id == 1)
{
var json = '{controllerParam: ' + id + '}';
$.ajax({
url:'@Url.Action("Action", "Controller")',
type:'POST',
data: json,
contentType:'Application/json',
success:fucntion(result){
$("#InterchangableView").html(result);
}
});
}
在控制器操作中,根据传递给它的结果,进行检查并以这种方式返回正确的partialView。
每次下拉列表更改时,都应调用javascript,这将返回一个PartialView,该View应该覆盖ID所针对的div中的任何内容。
答案 1 :(得分:0)
我终于做了一些工作来实现这一目标。
在选择下拉列表的JavaScript中,通过ajax调用,我将模型数据传递给了返回Partial View的控制器。 在Controller中,确定了正确的局部视图,并将该局部视图作为html数据返回给我的ajax调用,我以前在需要的(局部视图)div中替换了该局部视图。