使用 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>
}
}
大家好。首先,我已经阅读了超过 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>
}
}