0


我在我的网站上有一个部分视图,在许多页面之间共享,用于搜索功能,包括:
从日期
到日期
文件类型
文件名

现在,问题是,在某些页面中我不希望包含文件类型,在其他页面中我不希望包含(从 - 到)日期标准

我该怎么办?我应该为每个功能创建一个局部视图吗?或从内部显示/隐藏标准?

_Filters.cshtml

@model Entities.FilterOperations
<table width="85%" border="0" align="center" cellpadding="0" cellspacing="1">
    <tr>
        <td class="formtit">
            Start Date
        </td>
    </tr>
    <tr>
        <td>@Html.TextBoxFor(m => m.StartDate, new { @class = "date" })
        </td>
    </tr>
    <tr>
        <td class="formtit">
            End Date
        </td>
    </tr>
    <tr>
        <td>@Html.TextBoxFor(m => m.EndDate, new { @class = "date" })
        </td>
    </tr>
  <tr>
        <td class="formtit">
            File Type
        </td>
    </tr>
    <tr>
        <td>@Html.TextBoxFor(m => m.FileType)
        </td>
    </tr>
    <tr>
        <td class="formtit">
            File Name
        </td>
    </tr>
    <tr>
        <td>@Html.TextBoxFor(m => m.FileName)
        </td>
    </tr> <tr>
        <td align="right">
            <input type="submit" value="Search" />
        </td>
    </tr>
</table>
4

2 回答 2

0

创建几乎相等的部分是没有意义的。使用 Viewbag。

@if(ViewBag.ShowSomething ?? true)
{
    //enter code here
}
于 2012-07-06T21:24:22.113 回答
0

只需向您的 FilterOperations 模型添加一些属性,例如:

public bool RenderFileType {get; private set;}
public bool RenderDateTo {get; private set;}

有了一个新的演员:

public FilterOperations(bool renderFileType = true, bool renderDateTo = true) {
    RenderFileType = renderFileType;
    RenderDateTo = renderDateTo;
}

现在您可以像这样在您的部分设置条件:

@if(Model.RenderFileType) {
<tr>
    <td>@Html.TextBoxFor(m => m.FileType)
    </td>
</tr>
}

然后在您看来,像这样调用您的部分:

@Html.Partial("_Filters.cshtml", new FilterOperations(renderDateTo: false))
于 2012-07-06T23:02:10.523 回答