尝试调用操作方法会导致查看错误

时间:2015-07-13 04:54:16

标签: c# asp.net-mvc asp.net-mvc-4 actionmethod

我在一个控制器中有3个actionResults,我希望所有actionResults都返回一个视图,如下面的代码所示:

在控制器中:

<div id="board"></div>

在视图中我有两种形式:

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

我希望这个控制器做两件事:

  1. 根据输入搜索记录。

  2. 编辑记录。

  3. 我把每个函数都放到actionResult中。 ActionResult索引运行良好,但actionResult搜索不起作用,它没有事件转到我设置的断点。

2 个答案:

答案 0 :(得分:0)

您尝试在搜索方法中接收Group的对象,如果是,则应使用Group modal强烈键入您的视图

其他明智的更正您的搜索操作方法

[HttpPost]
 public ActionResult Search(int? GroupId) { 
     List<Group> listResult = ListGroup.Where(m=>m.GroupID == GroupId).ToList();
     return View("Index", listResult);
 }

答案 1 :(得分:0)

我不知道实际问题是什么。由于含糊不清,ModelBinder无法匹配某个属性名称,但我们并不了解所有相关的类。

我试图按如下方式重现问题,但是不能这样做,因此我可以给你一个工作(至少对我来说)你要做的事情的例子。我将列出我在这里创建的所有内容,以便您可以使用它并查看是否仍然出现错误。

我也冒昧地重构你的观点。你真的不需要那个丑陋的var i=0i++; - )

Group上课:

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

这绝对适合我(#34; SAVE&#34;&#34; SEARCH&#34;)。您可以尝试将其插入您的应用程序吗?