MVC3搜索用户控件

时间:2012-07-06 21:20:30

标签: asp.net-mvc-3


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

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

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

_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>

2 个答案:

答案 0 :(得分:0)

创造几乎相同的偏见是没有意义的。使用Viewbag。

@if(ViewBag.ShowSomething ?? true)
{
    //enter code here
}

答案 1 :(得分:0)

只需在FilterOperations模型中添加一些属性,如:

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

使用新的ctor:

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))