使用 mvc 填充局部视图

Populating Partial Views using mvc

大家好。首先,我已经阅读了超过 20 post 个关于这个主题的文章和至少 15 个 none 权益交换链接,并就此提出了 5 个我自己的问题。

首先我只想知道 mvc 可以在创建视图时用动态数据填充局部视图吗?如果不是,那么我怀疑的是正确的。这只能在 webforms 中下降,我可以放弃这个 mvc 应用程序并只使用 webforms。

如果可以的话,请告诉我如何做到这一点。这又是我所有的一切。

用调用的部分视图代码声明

_PartVue存放在mvc code behind文件夹的共享文件夹中 此部分视图是使用向导构建的

<table cellpadding="1" border="1">
    <tr>
        <th>
            Field1
        </th>
        <th>
            Field2
        </th>
        <th>
            Field3
        </th>

   </tr>

    @foreach (System.Models.DATA_LIST item in @ViewBag.List)
    {
        <tr>
            <td>
                @item.F1
            </td>
            <td>
                @item.F2
            </td>
            <td>
                @item.F3
            </td>
        </tr>
    }

</table>

在创建视图中

这是我希望部分视图显示在创建表单上的表单中的位置

        <div class="col-sm-6">

            <div class="form-horizontal" style="display:none" id="PV_List">

                @{ Html.RenderAction("ShowList",);}


            </div>
        </div>

在更改下拉视图后显示列表的创建视图中的 java 脚本代码

    $(document).ready(function () {
        $('#RES_ID').change(function ()
        {
            debugger;

            $.get('~/Views/Shared/_PartVue.cshtml', { VID: $(this).val() }, function (data) { $('#PV_List').html(data); });
            $("#PV_List").show(); // Shows Partial View


        });
    }

在控制器中,我有一个创建列表的函数和一个使用名为 return PartialView 的函数:

    [HttpGet]
    public ActionResult ShowList(int? VID)
    {


        ViewBag.DataList = Get_List(VID);
        return         PartialView("~/Views/Shared/_PartVue.cshtml",ViewBag.DataList);


    }

还有填充查看包数据的Get List函数

    private List<LIST_DATA> GET_List(int? VID)
    {

        return db.LIST_DATA.Where(i => i.ID == VID).ToList();
    }

我在创建时得到的是字段但没有数据。 当进入后面的代码时,我看到选择了正确的数据,但没有显示局部视图形式。

这是我得到的。

在 google 浏览器中出现以下错误: http://localhost:50296/PrograX/~/Views/Shared/_PartVue.cshtml?VID=808 加载资源失败:服务器响应状态为 403(禁止访问)

这个局部视图在共享文件夹中...所以 mvc 是否告诉我它不能用动态数据填充局部视图并且我需要使用 webforms 而不是尝试使用 mvc?

再次感谢。希望这个问题能更好地解释我想做什么,也许我能得到更好的指导,让我知道这是不可能的,也不能在这个平台上完成。谢谢

首先,您可以像这样在局部视图中指定要使用的模型:

@model List <YourSolutionName.YourFolderNameWhereModelIs.YourModelName>

然后就可以在foreach中使用了,如下:

@if(Model.Count > 0)
{
 foreach(var item in Model)
 {
        <tr>
            <td>
                @item.F1
            </td>
            <td>
                @item.F2
            </td>
            <td>
                @item.F3
            </td>
        </tr>
   }
}