在ASP .NET MVC 4中动态呈现部分视图

时间:2015-07-20 09:27:12

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我正在忙着调查以下内容的可能性:

我有一个搜索'视图。我有3个实体,人,车和房子。我想使用此搜索屏幕根据用户选择的实体类型动态构建搜索条件。

如果用户想要搜索“人物”,那么我想动态返回人物特定搜索条件的部分视图,例如姓名。或者,如果他们选择了Car,则会针对“引擎大小”等搜索条件返回不同的局部视图。

如何做到这一点?如果我可以通过ajax调用返回部分视图到控制器方法(以避免回发),那将是一个巨大的奖金。

1 个答案:

答案 0 :(得分:0)

首先在他们自己的div中渲染所有的部分,如此

<div id="personSearch">
    @Html.Partial("PartialView1")
</div>

<div id="carSearch">
    @Html.Partial("PartialView1")
</div>

<div id="houseSearch">
    @Html.Partial("PartialView1")
</div>

jQuery代码,我们首先隐藏所有3个过滤器,然后我们可以动态地根据用户选择的标准来设置div

这样的事情

$(function()
{
    // Hide all divs
    $('#personSearch').hide();
    $('#carSearch').hide();
    $('#houseSearch').hide();

    // This is the ID of a dropdownlist for Person, Car or House selection
    $('#UserCriteria').change(function ()
    {
        var value = $(this).val();

        // 1 id the int id for Person
        if(value == 1)
        {
            $('#personSearch').slideDown();
            $('#carSearch').slideUp();
            $('#houseSearch').slideUp();
        }
        // 2 id the int id for Car
        if(value == 2)
        {
            $('#personSearch').slideUp();
            $('#carSearch').slideDown();
            $('#houseSearch').slideUp();
        }
        // 3 id the int id for House
        if(value == 3)
        {
            $('#personSearch').slideUp();
            $('#carSearch').slideUp();
            $('#houseSearch').slideDown();
        }
    }.change();
});

所以我们在这里真正做的是基本上将所有部分视图渲染到页面上,但是如果默认值为null,则在$('#UserCriteria')上使用.change()将不会发生任何事情,但是如果默认值为“Person”(id = 1)。 personSearch div将slideDown并显示您的部分视图。

我希望这就是你要找的东西:)