部分视图和页面其余部分的视图模型不同

本文关键字:视图 模型 余部 | 更新日期: 2023-09-27 18:03:30

我想弄清楚如何在我的页面上使用完全不同的数据,而不是我在部分视图中使用的数据。

我有一个搜索栏在我的网站的顶部,顶部是一个部分视图,接受一个搜索视图模型和底部可以是任何东西(搜索结果,博客,完全不相关的东西)。

显然我不想"混合"视图模型,它们中的每一个都应该不知道其他(我不打算创建一个类来托管部分&每个不同页面的主视图模型)。

处理这种情况的合适方法是什么?

场景

  User fills search on the top
 => if model is invalid, redisplay current page with errors (current page could for 
    example be today's wether, requiring WeatherViewModel for main content and 
    SearchViewModel for partial view)
 => else display result page (still need SearchViewModel for top banner 
    and then SearchResultsViewModel for the page)

到目前为止,我没有在网上找到任何帮助(我发现的都是有意义的场景,创建一个类来托管两个子类,因为它们是功能相关的,这不是这里的情况)。

我的SearchViewModel看起来像这样:

    public class SearchViewModel
{
    [Required]
    public string StartCity { get; set; }
    [Required]
    public string EndCity { get; set; }
    [Required]
    public DateTime Date { get; set; }
    [Required]
    public SearchType Type { get; set; }
    [Required]
    public SearchTimeType TimeType { get; set; }
}

它只对应于顶部搜索,可以出现在任何页面上,而不管页面的其余部分使用什么视图模型。

部分视图和页面其余部分的视图模型不同

你可以把搜索局部视图插入到@RenderBody()之外的模板中。

你的部分视图可能有一个窗体的动作,返回ShowResults视图