我实际上正在研究Asp.Net MVC项目,我有一个问题是使用Html.RenderAction
方法从另一个加载视图。这只是当我在远程服务器上部署解决方案时尝试访问视图时。
以下是我使用的代码:
我有一个如下所示的Index.cshtml视图:
<section class="panel panel-default">
<section class="panel panel-default">
<header class="panel-heading">@Html.Localize("SmartContactMessages", "CustomersManagement")</header>
<div class="row wrapper">
<div class="col-sm-5 m-b-xs">
<a class="btn btn-primary" href="@Url.Action("Create")">
<i class="fa fa-plus text"></i>
<span class="text">@Html.Localize("SmartContactMessages", "Create")</span>
</a>
@*<a class="btn btn-danger" href="#" onclick="DeleteTerritories()">
<i class="fa fa-trash-o text"></i>
<span class="text">@Html.Localize("SmartContactMessages", "Delete")</span>
</a>*@
</div>
</div>
<div id="CustomerListZone">
@{
Html.RenderAction("List");
}
</div>
如您所见,我使用Html.RenderAction方法加载视图“List”。
List.schtml,显示一个包含不同企业的表。 (无需显示其代码)
在我的控制器中,我有以下代码:
[Authorize(Roles = RoleConstantes.AdminGlobal)]
public ActionResult List()
{
Logger.Info("List method enterred");
EnterpriseListMessage message = null;
WcfService<IEnterpriseServiceContract>.Use(Logger, e => message = e.GetAll());
var smartContactEnterpriseListViewData = new SmartContactEnterpriseListViewData
{
CurrentPage = 0,
ItemPerPage = 10,
NbPage = 1,
Total = 2
};
if (message != null && message.Success && message.Result != null)
{
smartContactEnterpriseListViewData.Entities = message.Result;
//var t = new EnterpriseEntity[3];
//t[0] = new EnterpriseEntity {Id = 1, Name = "Test1", UuId = "AZERTY1234", IsActive = true};
//t[1] = new EnterpriseEntity {Id = 2, Name = "Test2", UuId = "WXCVBBN6548", IsActive = true};
//t[2] = new EnterpriseEntity {Id = 3, Name = "Test3", UuId = "QSDFDG542358", IsActive = false};
//smartContactEnterpriseListViewData.Entities = t;
}
else
{
if(message == null)
Logger.Error("Get all enterprises fail : Message is null");
if(message != null && !message.Success)
Logger.Error("Get all enterprises fail : Message success is false");
if(message != null && message.Success && message.Result == null)
Logger.Error("Get all enterprises fail : Message result is null");
}
return PartialView(smartContactEnterpriseListViewData);
}
此方法必须获取所有企业并将其返回到View。 所有这些在我的本地IIS上没有问题。 但是一旦我在远程服务器上构建它,我就不能再显示这个视图,也不会显示错误。
我通过指定“List method enterred”来记录List()方法,但是在远程服务器上永远不会调用它。我还嘲笑了对WCF的调用以确认问题不是来自这里(因为你可以看到List方法中的注释代码)
如果你们中的任何一个人有任何想法,那将是apreciated:)
答案 0 :(得分:0)
最后我解决了这个问题。 问题不在于角色授权。实际上,我的WCF向我返回了很多数据,因此它触发了maxBufferedSizeOverflow。事实上,我本地服务器上的数据少于远程服务器上的数据。 所以我通过建立分页来实现一种方法来返回更少的数据。 问题解决了!