在部分视图中获取对象

时间:2017-06-08 18:11:29

标签: c# asp.net asp.net-mvc partial-views

我有一个名为“OtherDatas.cshtml”的View页面,我需要在她的内部渲染一个PartialView。所以,为了做到这一点,我需要检查partialView中的对象是否为null。如果没有,则显示partialView。如何在partialView中获取对象?这是我的代码:

OtherDatas.cshtml:

<div class="table-responsive">
        @{
            if (//I need to check the object inside ){
                Html.Partial("~/Views/Outrosdados/Search.cshtml");
            }
            else
            {
            <table class="table table-striped">
                <tr>
                    <th style="min-width:130px;">Mês</th>
                    <th style="min-width:80px;">Amortização</th>
                    <th style="min-width:100px;">Recebimento do Mês</th>
                    <th style="min-width:100px;">Atraso</th>
                    <th style="min-width:100px;">DAMP3</th>
                </tr>
            </table>
            }
        }
    </div>

PartialView Search.html:

@model TB_DADOS_MANUAIS
@using EixoX.Html;
@using Gestão.Models;
@using System.Globalization;
@{
    List<TB_OUTROS_DADOS> od = (List<TB_OUTROS_DADOS>)ViewData["outrosDados"];
Bootstrap3Presenter<TB_OUTROS_DADOS> presenter = 
Bootstrap3Presenter<TB_OUTROS_DADOS>.GetInstance("pt-BR");
ViewBag.Title = "Outros Dados";

}

<table class="table table-striped">
    <tr>
        <th style="min-width:130px;">Mês</th>
        <th style="min-width:80px;">Amortização</th>
        <th style="min-width:100px;">Recebimento do Mês</th>
        <th style="min-width:100px;">Atraso</th>
        <th style="min-width:100px;">DAMP3</th>
    </tr>
    @foreach (TB_OUTROS_DADOS dados in od){
        <tr>
<td>@dados.DT_MES_UTILIZACAO.ToString(CultureInfo.CreateSpecificCulture("pt-BR"))</td>
    <td><span class="money" />@dados.VL_AMORTIZACAO</td>
    <td><span class="money" />@dados.VL_RECEBIMENTO_MES</td>
    <td><span class="money" />@dados.VL_ATRASO</td>
    <td><span class="money" />@dados.VL_DAMP3</td>
    </tr>
    }
</table>

如果我在'od'列表中有'TB_OUTROS_DADOS',我需要检查'foreach'的内部。

谢谢!

1 个答案:

答案 0 :(得分:1)

你不能以这种方式做到这一点。 通过列表&lt;&gt;作为您父视图的模型或以与部分视图相同的方式声明此列表然后执行检查,如果它是好的将其传递给局部视图。 这样:

@{
    List<TB_OUTROS_DADOS> od = (List<TB_OUTROS_DADOS>)ViewData["outrosDados"];
    <div class="table-responsive">
            @{
                if (od.Count > 0){
                    Html.Partial("~/Views/Outrosdados/Search.cshtml",od);
                }
                else
                {
                <table class="table table-striped">
                <tr>
                    <th style="min-width:130px;">Mês</th>
                    <th style="min-width:80px;">Amortização</th>
                    <th style="min-width:100px;">Recebimento do Mês</th>
                    <th style="min-width:100px;">Atraso</th>
                    <th style="min-width:100px;">DAMP3</th>
                </tr>
            </table>
            }
        }
    </div>

在PartialView中

@model List<TB_OUTROS_DADOS>
@using EixoX.Html;
@using Gestão.Models;
@using System.Globalization;
@{

Bootstrap3Presenter<TB_OUTROS_DADOS> presenter = 
Bootstrap3Presenter<TB_OUTROS_DADOS>.GetInstance("pt-BR");
ViewBag.Title = "Outros Dados";
}

<table class="table table-striped">
    <tr>
        <th style="min-width:130px;">Mês</th>
        <th style="min-width:80px;">Amortização</th>
        <th style="min-width:100px;">Recebimento do Mês</th>
        <th style="min-width:100px;">Atraso</th>
        <th style="min-width:100px;">DAMP3</th>
    </tr>
    @foreach (TB_OUTROS_DADOS dados in Model){
        <tr>
<td>@dados.DT_MES_UTILIZACAO.ToString(CultureInfo.CreateSpecificCulture("pt-BR"))</td>
    <td><span class="money" />@dados.VL_AMORTIZACAO</td>
    <td><span class="money" />@dados.VL_RECEBIMENTO_MES</td>
    <td><span class="money" />@dados.VL_ATRASO</td>
    <td><span class="money" />@dados.VL_DAMP3</td>
    </tr>
    }
</table>