如何转换viewmodel以接受mvc 4中的任何模型

时间:2014-12-16 11:32:35

标签: asp.net-mvc asp.net-mvc-4

我有MVC 4应用程序,用户可以从下拉列表中选择数据源,并根据我们使用Entity Framework在相关表中搜索的选择。数据模型将返回到搜索结果视图。我为每个源结果创建了一个局部视图,因为每个数据模型中的字段不同。我的代码看起来像这样

@using SFRS.GazMatching.Web.Models
@model IPagedList<CentraladdrcdoQuery>

@Html.Partial("_SearchForm", searchFormViewModel)

<h4>Search Results</h4>

@if (ViewBag.IsCentralAddrcCDOQuery)
{
@Html.Partial("_CentraladdrcdoQuery", Model)
}

@if (ViewBag.IsLandbfsladdraddrcdoQuery)
{
@Html.Partial("_LandbfsladdraddrcdoQueries", Model)
 }

只是想知道是否可以将此模型转换为接受任何数据模型IPagedList<CentraladdrcdoQuery>,即IPagedList<T>和T can of CentraladdrcdoQuery,LandbfsladdraddrcdoQuery等类型,我们可以通过检查ViewBag值来呈现相关的局部视图< / p>

2 个答案:

答案 0 :(得分:0)

我设法通过创建新模型SearchResultsModel来解决这个问题,如下所示,并将各个数据模型实体添加为属性。在控制器中,我检索搜索结果并根据用户对源的选择设置属性值并返回此模型

public class SearchResultsModel
{
    public IEnumerable<CentraladdrcdoQuery> centraladdrcdoQuery { get; set; }
    public IEnumerable<LandbfsladdraddrcdoQuery> landbfsladdraddrcdoQuery { get; set; }
}

视图具有以下标记

@model SearchResultsModel

@{
ViewBag.Title = "Search";
Layout = "~/Views/Shared/_Layout.cshtml";
SearchFormViewModel searchFormViewModel = new SearchFormViewModel();
}

@Html.Partial("_SearchForm", searchFormViewModel)
<h4>Search Results</h4>

@if (ViewBag.Source == "1")
{
@Html.Partial("_CentraladdrcdoQuery", Model.centraladdrcdoQuery)
}

@if (ViewBag.Source == "2")
{
@Html.Partial("_LandbfsladdraddrcdoQuery", Model.landbfsladdraddrcdoQuery)
}

答案 1 :(得分:0)

正如您所提到的,您将带来搜索结果。虽然结果可能来自不同的表格,但我认为您应该将新模型作为SearchResult&amp;无论搜索结果来自哪个表,SearchResult模型都应具有公共字段。与结果标题一样,描述....