有条件地将数据从封闭视图传递到部分视图

时间:2019-01-17 11:52:09

标签: javascript c# jquery asp.net-mvc razor

我的要求

我需要在选择下拉列表时呈现部分视图

  • 在页面加载中(来自Controller),我具有部分视图的所有必需数据(viewmodel)
  • 所有部分视图都需要从View(cshtml)的视图模型中获取相同的数据
  • 选择下拉列表值时,需要呈现所需的Partial View(在1-4下给出)。

渲染部分视图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

2 个答案:

答案 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中替换了该局部视图。