【问题标题】:MVC views: How to render a table in a view only when a button clickedMVC 视图:如何仅在单击按钮时在视图中呈现表格
【发布时间】:2013-12-08 23:56:42
【问题描述】:

我是 MVC 的新手,并且有一个包含搜索文本框 + 按钮、导航选项卡和表格的视图。

我希望仅在输入搜索条件并单击按钮时填充表格。

我现在遇到的问题是视图的表格部分被渲染并在页面加载时返回空对象引用错误。

除了使用 jquery/java 函数外,我怎样才能让表格仅在输入搜索条件并单击按钮时才填充?

我是否需要创建 2 个单独的视图(一个有表格,一个没有)?

以下是我的部分观点:

        <div class="searchBox">

              <label>Please search here
                        <input type="text" name="searchTerm" id="searchTerm" value="<%= !string.IsNullOrEmpty((string) ViewData["SearchTerm"]) ? Html.Encode(ViewData["SearchTerm"]) : "" %>" />
                        <input type="button" value="Add" />
                </label>
        </div>

        <ul class="navigation">
    <li><a class="selected" href="#name" >Person1</a></li>
    <li><a href="#dob">Person2</a></li>
    <li><a href="#address">Person3</a></li>
    <li><a href="#status">Person4</a></li>
    </ul>

    <div class="tabSection">
    <div class="basic">


        <table id="person" class="gridview">
            <thead>
                <tr>
                    <th>name</th>
                    <th>dob</th>
                    <th>address</th>
                    <th></th>
                </tr>
                <tr>
                    <td><%= Model.name %></td>
                    <td><%= Model.dob%></td>
                    <td><%= Model.address%></td>
                    <td></td>
                </tr>
            </thead>
        </table>

</div>
</div>

【问题讨论】:

  • 你已经在做这件事了。您可以将视图的任何部分包装成一个不为空或为空的字符串,检查您的搜索词。完全不相关,但我的一个小毛病是将 javascript 称为 java。 Java 完全是另外一回事。

标签: c# asp.net asp.net-mvc asp.net-mvc-3 search-engine


【解决方案1】:

你应该把你的桌子包起来:

@if (Model != null)
{
    // table code
}

此外,您可能需要考虑将表逻辑放入局部视图,并将 if 语句放在局部视图中。这样,在您的主视图中,您可以只使用 Html.RenderPartial("PARTAILVIEWNAME"); 这样做可以让您在任意数量的视图中拥有同一个表,而不必记住每次都将表包装在 if 语句中。

【讨论】:

    猜你喜欢
    • 2015-05-22
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多