尝试调用操作方法会导致视图错误
本文关键字:视图 错误 调用 操作方法 | 更新日期: 2023-09-27 18:02:17
我在一个控制器中有3个actionResults,我希望所有的actionResults返回一个视图,如下面的代码:
In controller:
public ActionResult Index()
{
return View(ListGroup);
}
[HttpPost]
public ActionResult Index(List<Group> listModel) {
@ViewBag.Success = "Update Suceess";
return View(listModel);//I set break point here
}
[HttpPost]
public ActionResult Search(Group ModelSearch) {
List<Group> listResult = ListGroup.Where(m=>m.GroupID == ModelSearch.GroupID).ToList();
return View("Index", listResult);
}
我有两种形式:
@using (Html.BeginForm("Search", "DisplayTable"))
{
<fieldset>
<legend>Search</legend>
<input type="text" name="GroupID" />
<input type="submit" value="SEARCH" />
</fieldset>
}
@using (Html.BeginForm("Index", "DisplayTable", FormMethod.Post))
{
var i = 0;
<table>
<tr>
<td>Name</td>
<td>GroupID</td>
</tr>
@foreach(var item in Model){
<tr>
<td>@Html.TextBoxFor(m => m[i].Name)</td>
<td>@Html.TextBoxFor(m => m[i].GroupID)</td>
</tr>
i++;
}
</table>
<input type="submit" value="SAVE" />
}
我希望这个控制器做两件事:
根据输入搜索记录
编辑记录。
我把每个函数的actionResult。ActionResult Index工作得很好,但是ActionResult Search不工作,它没有到达我设置的断点。
你试图在你的搜索方法中接收Group的对象,如果是这样,你的视图应该使用Group模态强类型
否则,请更正您的搜索操作方法
[HttpPost]
public ActionResult Search(int? GroupId) {
List<Group> listResult = ListGroup.Where(m=>m.GroupID == GroupId).ToList();
return View("Index", listResult);
}
我不知道实际的问题是什么。它可能是ModelBinder
由于歧义而无法匹配某些属性名,但我们不知道所有涉及的类。
我试着像下面这样重现这个问题,但不能这样做,因此我可以给你一个工作(至少对我来说)的例子,你正在尝试做什么。我将列出我在这里创建的所有内容,以便您可以使用它并查看是否仍然得到错误。
我还冒昧地重构了您的视图。你真的不需要那些丑陋的var i=0
和i++
;-)
Group
class:
public class Group
{
public int GroupID { get; set; }
public string Name { get; set; }
}
Index
视图:
@model IList<WebApplication1.Models.Group>
@using (Html.BeginForm("Search", "DisplayTable"))
{
<fieldset>
<input type="text" name="GroupID" />
<input type="submit" value="SEARCH" />
</fieldset>
}
@using (Html.BeginForm("Index", "DisplayTable"))
{
<table>
<tr>
<td>Name</td>
<td>GroupID</td>
</tr>
@for (int i = 0; i < Model.Count; i++)
{
<tr>
<td>@Html.TextBoxFor(model => model[i].GroupID)</td>
<td>@Html.TextBoxFor(model => model[i].Name)</td>
</tr>
}
</table>
<input type="submit" value="SAVE" />
}
控制器:
public class DisplayTableController : Controller
{
private List<Group> groups = new List<Group>
{
new Group { GroupID = 1, Name = "Group 1" },
new Group { GroupID = 2, Name = "Group 2" }
};
public ActionResult Index()
{
return View(groups);
}
[HttpPost]
public ActionResult Index(List<Group> viewModel)
{
return View(viewModel);
}
[HttpPost]
public ActionResult Search(Group group)
{
var result = groups.Where(g => g.GroupID == group.GroupID).ToList();
return View("Index", result);
}
}
这绝对适合我("SAVE"answers"SEARCH")。你能试着把它插入你的应用程序吗?