【问题标题】:razor MVC EF how to show and hide a div based on model conditionrazor MVC EF 如何根据模型条件显示和隐藏 div
【发布时间】:2015-09-19 15:31:05
【问题描述】:

这里的总菜鸟:) 我的 index.cshtml 上有一个简单的表单,它向我的控制器提交值并显示结果。我希望隐藏此表单 @if (Model != null)。它看起来像这样:

<div id="inputform" class="visible">
    <form id="certlookup" class="form-inline" role="form" method="get">
        <div class="input-group">
            <div><input class="form-control" name="prefix" placeholder="99" maxlength="2" type="number" required /></div>
            <div><select class="form-control dropdown" name="type" id="type"><option value="A">A</option><option value="B">B</option></select></div>
            <div>
                <input class="form-control" name="suffix" placeholder="9999" maxlength="4" type="number" required />
            </div>
            <div>
                <input class="btn btn-primary" type="submit" value="Go!" />
            </div>
        </div>
    </form>
</div>
@if (Model != null)
{...}

我不确定最好的方法是什么。我试图在我的 Model != null 语句之后设置一个变量,设置 class=@hidden,但该变量在上面的表单中不可用。

这可能吗?这是针对移动优先网站的,所以我希望在提供结果后表单输入消失,但理想情况下我不想为表单和结果使用单独的页面。 谢谢!

【问题讨论】:

    标签: razor asp.net-mvc-5


    【解决方案1】:

    只需在表单前检查 Model 是否为 null:

    @if (Model == null)
    {
    <div id="inputform" class="visible">
        <form id="certlookup" class="form-inline" role="form" method="get">
            <div class="input-group">
                <div><input class="form-control" name="prefix" placeholder="99" maxlength="2" type="number" required /></div>
                <div><select class="form-control dropdown" name="type" id="type"><option value="A">A</option><option value="B">B</option></select></div>
                <div>
                    <input class="form-control" name="suffix" placeholder="9999" maxlength="4" type="number" required />
                </div>
                <div>
                    <input class="btn btn-primary" type="submit" value="Go!" />
                </div>
            </div>
        </form>
    </div>
    }
    

    或者可以在“inputformdiv”中设置类:

    @{
       string cssClass = Model == null ? "visible" : "hidden";
    }
    <div id="inputform" class="@cssClass">
    <form id="certlookup" class="form-inline" role="form" method="get">
        <div class="input-group">
            <div><input class="form-control" name="prefix" placeholder="99" maxlength="2" type="number" required /></div>
            <div><select class="form-control dropdown" name="type" id="type"><option value="A">A</option><option value="B">B</option></select></div>
            <div>
                <input class="form-control" name="suffix" placeholder="9999" maxlength="4" type="number" required />
            </div>
            <div>
                <input class="btn btn-primary" type="submit" value="Go!" />
            </div>
        </div>
    </form>
    

    【讨论】:

    • 谢谢 Stefano!我对您推荐的第二种方式做了一个小调整: Model.Count() == 0 ? “可见”:“隐藏”;它可以按需要工作!谢谢!
    • 除了使用局部视图和 Html.RenderAction 外,我怎样才能做同样的事情。无论 if 条件是什么,局部视图都会呈现
    【解决方案2】:

    您可以在 MVC 视图中使用 FirstOrDefault() 或不使用此条件

    这解决了我的问题:

    @if (Model.Table_Name.FirstOrDefault().Column_Name.HasValue == true)
    
    <div>
    
    // your code 
    
    </div> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 2015-12-21
      相关资源
      最近更新 更多