使用mvc

时间:2017-01-31 23:48:21

标签: javascript razor partial-views viewbag

再次问候伙计们。首先,我读了20多篇关于这个主题的帖子,至少15篇没有任何股权交换链接,并就此提出了我自己的5个问题。

首先我只是想知道在创建视图中mvc是否可以使用动态数据填充局部视图?如果没有,那么我怀疑是正确的。这只能在webforms中删除,我可以删除这个mvc应用程序,只使用webforms。

如果可以,请说明如何做到这一点。这里有我所拥有的一切。

使用名为

的部分视图代码进行说明

_PartVue存储在文件夹后面的mvc代码的共享文件夹中 这部分视图是使用向导构建的

<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);


    }

填充视图包数据的获取列表功能

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

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

我从创建中获得的是字段,但没有数据。 什么是进入代码后面我看到正确的数据被选中,但它不会没有部分视图形式。

这是我得到的。

在谷歌浏览器中,我收到以下错误: http://localhost:50296/PrograX/~/Views/Shared/_PartVue.cshtml?VID=808无法加载资源:服务器响应状态为403(禁止)

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

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

1 个答案:

答案 0 :(得分:0)

首先,您可以在部分视图中指定要使用的模型,如下所示:

@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>
   }
}