如何在Begin Form标记之外检查我的模型是否为空

时间:2015-06-16 14:19:08

标签: c# html razor

基本上我有一些隐藏的字段,当返回的数据为空时会导致错误。我想要做的是检查模型是否为空,如果它是空的,我想跳过整个Begin Form标签并移到我的桌子上。但是,当我尝试这个时,它仍然会停止并通过Begin Form标签。反正有改变吗?

您可以在下面看到我的设置:

@if (!Model.ReportData.Any()) 
{
    using (Html.BeginForm("ReportSelection", "Reports", FormMethod.Post))      
    {
        @Html.DropDownListFor(r => r.StatusCategoryID, new SelectList(Model.StatusCategories, "StatusCategoryID", "StatusCategoryDesc"), "Select Status", new { @class = "GRDropDown", @id = "ReportDD" })
        <input type="hidden" name="StatusReportID" value="1" />
        <input type="hidden" name="ClientID" value="@Model.ReportData.Select(r => r.ClientID).FirstOrDefault()" />
        if (Model.ReportData.Select(r => r.SupplierID).Any()) 
        { 
            <input type="hidden" name="SupplierID" value="@Model.ReportData.Select(r => r.SupplierID).FirstOrDefault()" />
        }
        else if (Model.ReportData.Select(r => r.ReviewPeriodID).Any()) 
        { 
            <input type="hidden" name="ReviewPeriodID" value="@Model.ReportData.Select(r => r.ReviewPeriodID).FirstOrDefault()" />
        }
        <button type="submit" value="Submit" class="btn btn-default">Submit</button>
    }
}

如果模型为空,如何阻止它执行Begin表单标记?我原以为我的IF会阻止它,但事实并非如此。

1 个答案:

答案 0 :(得分:2)

你的情况是倒退的。你说&#34;如果它没有任何内容,请显示此表格&#34;:

@if (!Model.ReportData.Any()) {

你希望它是&#34;如果它有内容,请显示此表格&#34;:

@if (Model.ReportData.Any()) {