我正在尝试在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; }
}
答案 0 :(得分:0)
在ReturnResults视图中,您将Model传递给局部视图。此Model对象的类型为ReturnResults,但局部视图需要Find类型的模型。这是您的错误消息告诉您的内容。解决此问题的一种方法是在ReturnResults视图模型类中添加一个属性,然后在调用局部视图时将其传入。
@Html.Partial("_Find", Model.Find);
此外,在您的控制器中,您正在创建一个ReturnResults列表; ,但您的ReturnResult.cshtml视图需要Scalar ReturnResult对象。
答案 1 :(得分:0)
由于您正在构建搜索功能,并且不需要对现有值进行任何编辑,因此您可以尝试@Html.Partial("_Find", new MyModels.Find())
干杯