c# - 将数据从 View 传递到 Controller

标签 c# .net asp.net-mvc view controller

在 ASP.NET MVC 应用程序中,我正在为管理员制定接受或拒绝新成员的逻辑。我正在显示一个成员列表和两个接受和拒绝按钮,如下所示:

<% foreach (var mm in (ViewData["pendingmembers"] as List<MyMember>)) %>
<% { %>
   <tr><td>Username:<%=mm.UserName %></td><td>
   <tr><td>Firstname:<%=mm.FirstName %></td><td>
   ...etc...
   <tr>
      <td>
      <% using (Html.BeginForm("AcceptPendingUser", "Admin"))
      { %>
          <input type="submit" value="Accept" />
      <% } %>
      </td>
      <td>
      <% using (Html.BeginForm("RejectPendingUser", "Admin"))
      { %>
        <input type="submit" value="Reject" />
      <% } %>
      </td>
    </tr>
<% } %>

因此,待定成员数据列表位于 MyMember 对象列表中。每个 MyMember 对象都将打印出成员,并设置两个按钮供管理员接受或拒绝待定成员。

然后,在 Controller 中,我将对这两个输入字段/表单的处理分开,如下所示:

public ActionResult AcceptPendingUser()
{
   // TODO: Add code to save user into DB and send welcome email.
   return RedirectToAction("Index");
}

public ActionResult RejectPendingUser()
{
   // TODO: Add code to remove user from PendingUsers list and send rejection email.
   return RedirectToAction("Index");
}

我想直接获取用户按下的按钮旁边的对象。 如何将 MyMember 对象从 View 发送到 Controller ? 或者我如何通过按下按钮发送一个数字索引?也许有一个隐藏字段?

最佳答案

最简单的选项可能是隐藏输入:

<input type="hidden" value="<%=mm.Key%>" name="key" id="key" />

(相应地命名;在每种形式中)

然后这两个 Controller 将接受一个名为“key”的参数(重命名以适应)。如果您想从多个输入中解析对象,您将需要一个 ModelBinder。当然,除了 2*n 表单之外,您可以考虑基于查询字符串的 url,或者使用 jQuery(或其他脚本助手)之类的东西来提交数据而不需要表单(如果脚本可用)。

关于c# - 将数据从 View 传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/435387/

相关文章:

c# - 调整并发字典大小时遇到​​ Synchronization LockException

c# - 通过 DotNetOpenAuth 对 FreshBooks 进行身份验证

c# - 正则表达式在 .NET 中不起作用

javascript - MVC jquery.dataTables 无法获取未定义或空引用的属性 'className'

c# - ASPNET MVC - 为什么 ModelState.IsValid false "The x field is required"当该字段确实有值时?

c# - 如何从 x64 构建应用程序?

c# - asp.net core如何根据用户类型实现API限速

c# - 如何提高大量较小文件的读写速度或性能

C#:在 foreach 中跳过一行?

c# - 只要使用异步,ASP.Net MVC 4 Controller 就会挂起