【问题标题】:Different viewmodel in partial view and rest of page?部分视图和页面其余部分中的不同视图模型?
【发布时间】:2014-05-14 23:53:38
【问题描述】:

我试图弄清楚与我在局部视图中使用的数据相比,如何在我的页面上使用完全不同的数据。

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

显然我不想“混合”视图模型,它们中的每一个都应该不知道另一个(我不会创建一个类来为每个不同的页面同时托管部分视图模型和主视图模型)。

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

场景是

  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; }
}

它仅对应于顶部搜索,并且可以出现在任何页面上,无论 REST OF THE PAGE 使用什么视图模型。

【问题讨论】:

  • 这个SearchViewModel 是什么样子的?
  • 你的意思是页面和搜索控件的视图模型必须不同,但无论发生错误,它都必须显示在主页中
  • 好的,所以搜索在页面顶部,但是当用户搜索时,没有处理SearchViewModel 的控制器操作吗?当用户搜索时,他们转到到那个控制器动作。所以我不确定你为什么需要在所有控制器操作中处理SearchViewModel。
  • 好吧,如果我只想在那里处理 searchviewmodel,我想这可行,但理想情况下,如果出现错误,我希望在源页面中显示模型错误(而不是导航到控制器)

标签: c# asp.net asp.net-mvc asp.net-mvc-5


【解决方案1】:

您可以将 Search Partial View 插入到 @RenderBody() 之外的模板中。

您的部分视图可能有一个返回 ShowResults 视图的操作的表单。

【讨论】:

    猜你喜欢
    • 2014-07-23
    • 1970-01-01
    • 2019-09-25
    • 2018-12-22
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多