使用Asp.net MVC搜索模型并返回不同的模型(局部视图)

本文关键字:模型 局部 视图 返回 net Asp MVC 搜索 使用 | 更新日期: 2023-09-27 17:49:38

我试图在MVC视图中实现搜索功能。我有视图称为'ReturnResults'和部分视图(_Find)在它。_Find是我用来查找/过滤结果的对象。

这是实现搜索的正确方法吗?我得到错误传入字典的模型项目是类型'MyModels。ReturnResults',但是这个字典需要一个类型为'MyModels.Find'的模型项。

控制器方法:

public ActionResult Locate(Find find)
{
    List<ReturnResults> returnV = new List<ReturnResults>();
    returnV = CallDB.GetList(find)
    return View(returnV);
}

视图(ReturnResults):

@model MyModels.ReturnResults
@{
    ViewBag.Title = "List Results";
}
@Html.Partial("_Find", Model)
部分视图(_Find):
@model MyModels.Find
@{
    ViewBag.Title = "Find";
}
@using (Html.BeginForm("Locate", "LocateCource", FormMethod.Post, new { name = "frmLocate", id = "frmLocate"}))
{
    <td>
        @Html.LabelFor(m => m.Number)
        @Html.TextBoxFor(m => m.Number)
    </td>
    <td>
        @Html.LabelFor(m => m.Course)
        @Html.TextBoxFor(m => m.Course)
    </td>   
    <td>
        @Html.LabelFor(m => m.Location)
        @Html.TextBoxFor(m => m.Location)
    </td>
    </td>   
    <td>
        @Html.LabelFor(m => m.Condition1)
        @Html.TextBoxFor(m => m.Condition1)
    </td>
    <td>
        @Html.LabelFor(m => m.Condition2)
        @Html.TextBoxFor(m => m.Condition2)
    </td>   
        <td>
        @Html.LabelFor(m => m.Condition3)
        @Html.TextBoxFor(m => m.Condition3)
    </td>   
}
部分观点:

public class Find
{
    [Display(Name = "Number ")]
    public int Number { get; set; }
    [Display(Name = "Course Name")]
    public string Course { get; set; }
    [Display(Name = "Course Name")]
    public string Location { get; set; }
    [Display(Name = "Condition1")]
    public string Condition1 { get; set; }  
    [Display(Name = "Condition2")]
    public string Condition3 { get; set; }  
    [Display(Name = "Condition3")]
    public string Condition3 { get; set; }      
}

View:(with Partial View)

public class ReturnResults
{
    [Display(Name = "Number ")]
    public int Number { get; set; }
    [Display(Name = "Course Name")]
    public string Course { get; set; }
    [Display(Name = "Return1")]
    public string Return1 { get; set; }
    [Display(Name = "Return2")]
    public string Return2 { get; set; }
    [Display(Name = "Return3")]
    public string Return3 { get; set; }
    [Display(Name = "Return4")]
    public string Return4 { get; set; }
    [Display(Name = "Return5")]
    public string Return5 { get; set; }
    [Display(Name = "Return6")]
    public string Return6 { get; set; } 
}

使用Asp.net MVC搜索模型并返回不同的模型(局部视图)

在您的ReturnResults视图中,您正在将Model传递给分部视图。这个Model对象的类型是ReturnResults,但是分部视图期望的是Find类型的模型。这就是错误信息告诉您的内容。解决这个问题的一种方法是在ReturnResults视图模型类中添加一个Find类型的属性,然后在调用部分视图时将其传递进去。

@Html.Partial("_Find", Model.Find);

同样,在你的控制器中,你正在创建一个List of ReturnResults;,但是你的ReturnResult。cshtml视图期待一个标量的ReturnResult对象。

由于您正在构建搜索功能,并且不需要对现有值进行任何编辑,您可以尝试@Html.Partial("_Find", new MyModels.Find())

欢呼