【问题标题】:What is `confirmButton` in NerdDinner's ActionResult Delete?NerdDinner 的 ActionResult Delete 中的 `confirmButton` 是什么?
【发布时间】:2010-08-09 14:17:09
【问题描述】:
在 NerdDinner MVC 应用演示中,设置 ActionResult Delete 时定义了 confirmButton:
public ActionResult Delete(int id, string confirmButton) {
confirmButton 是什么意思,因为它没有在代码中使用?我假设它返回了被点击的提交按钮的名称,但它只是一个空白字符串。如何知道按下了哪个按钮(例如,您可以在同一页面上拥有 archive 和 delete(或 yes、no)按钮)?
【问题讨论】:
标签:
asp.net-mvc
nerddinner
【解决方案1】:
如果您查看 Delete.aspx 视图,您将看到以下 html...
<h2>
Delete Confirmation
</h2>
<div>
<p>Please confirm you want to cancel the dinner titled:
<i> <%:Model.Title %>? </i> </p>
</div>
<% using (Html.BeginForm()) { %>
<input name="confirmButton" type="submit" value="Delete" />
<% } %>
如您所见,confirmButton 位于此处,其值将传递给您指定的 ActionResult。
您还可以指定两个按钮,例如...
<% using (Html.BeginForm()) { %>
<input name="confirmButton" type="submit" value="Delete" />
<input name="confirmButton" type="submit" value="Something Else" />
<% } %>
confirmButton 参数将具有您单击的任何一个的值...
虽然它在 NerdDinner 中无法正常工作很奇怪,但您可以通过创建一个快速项目并打开默认 HomeController 并添加来轻松测试这一点
[HttpPost]
public ActionResult Index(string confirmButton) {
return View();
}
在Index.aspx中可以添加
<% using (Html.BeginForm()) { %>
<input name="confirmButton" type="submit" value="Delete" />
<input name="confirmButton" type="submit" value="Something Else" />
<% } %>
你应该很高兴。