在 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/