繁体   English   中英

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

[英]Asp.net MVC search using model and return different model (partial view)

我正在尝试在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; }      
}

查看:(带局部视图)

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

在ReturnResults视图中,您将Model传递给局部视图。 此Model对象的类型为ReturnResults,但是部分视图需要使用Find类型的模型。 这就是您的错误消息告诉您的内容。 解决此问题的一种方法是将属性添加到类型为Find的ReturnResults视图模型类中,然后在调用部分视图时将其传递。

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

同样,在您的控制器中,您正在创建ReturnResults的列表。 ,但您的ReturnResult.cshtml视图需要一个Scalar ReturnResult对象。

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

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM