【问题标题】:MVC Partial View not renderingMVC 局部视图未呈现
【发布时间】:2014-10-15 17:04:25
【问题描述】:

部分视图在传递 ViewModel 时未呈现。它在没有 ViewModel 的情况下呈现。 我的意思是,如果我保留 @Html.Partial("PartialClientIndex") 那么它的渲染,当我通过 ViewModel 时,它直接进入 Dispose 而不渲染部分视图。 我在这里遗漏了一些东西..你能帮忙吗?

主视图:

    <div id="PartialClient">    
        @Html.Partial("PartialClientIndex", viewModelList)                     
   </div>

行动:

    [HttpPost]
    public ActionResult PartialClientIndex(int? SelectedGroupId)
    {
        int SkipRec = 0;
        int NextRec = 25;            
        VMClient vmclient = new VMClient();
        vmclient.IEClients = db.client.Where(cl => cl.Groups.id == SelectedGroupId).OrderBy(c => c.id).Skip(SkipRec).Take(NextRec).ToList();
        return PartialView("PartialClientIndex", vmclient);
    }

局部视图:

    @model IEnumerable<HostingManager.Models.VMClient>
   <table>
   <thead>
    <tr>
    <th style="width:25px; padding:10px;">
      Group
    </th>
    <th class="tbContent-Name">
        Client Name
    </th>
    <th class="tbContent-Name">
        Contact Person
    </th>
    <th class="tbContent-Name">
        Contact Email
    </th >        
    <th></th>
</tr>
</thead>
<tbody>
   @if(Model != null)        
   {
       var x = Model.Select(c=>c.IEClients).ToList();
       var y = x[0].ToList();

     //  var y = x[0]["item1"];
         foreach (var item in y) {
            <tr> 
                <td class="tbContent-Name">
                   @Html.DisplayFor(modelItem => item.Groups.name)
                </td>      
                <td class="tbContent-Name">
                    @Html.DisplayFor(modelItem => item.contactPerson)
                </td>
                <td class="tbContent-Name">
                    @Html.DisplayFor(modelItem => item.contactPerson)
                </td>
                <td class="tbContent-Name">
                    @Html.DisplayFor(modelItem => item.contactEmail)
                </td>        
                <td>
                    @Html.ActionLink("Edit", "Edit", new { id=item.id }) |          
                    @Html.ActionLink("Delete", "Delete", new { id = item.id }, new { onclick = "return confirm('Are you sure you wish to delete this ?');" })
                </td>
            </tr>
            }
            }
    </tbody>

【问题讨论】:

  • 显示部分视图代码
  • 我已经添加了部分视图代码@Ehsan Sajjad.. 请您指教
  • 乍一看,您正试图将模型传递给要求int?ActionResult
  • @ethorn10 @Html.Partial 不会调用操作方法,它只是运行具有该名称的cshtml 文件
  • @user2254395 如果要直接处理,我怀疑部分视图中出现错误-viewModelList 绝对是IEnumerable&lt;VMClient&gt;?你如何创建这个变量?

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


【解决方案1】:

您作为模型传递到局部视图的变量vmclient 的类型似乎是VMClient。尽管您的部分视图期待 IEnumerable&lt;VMClient&gt; 类型。

您基本上必须将局部视图中的模型类型更改为以下

@model HostingManager.Models.VMClient

并调整分配y 变量的方式

var y = Model.IEClients;

【讨论】:

  • 我已经更新了模型类型定义行 - 似乎我第一次尝试时不小心写了 IEnumerable )
猜你喜欢
  • 1970-01-01
  • 2013-06-17
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
相关资源
最近更新 更多