0

在 NerdDinner MVC 应用演示中,confirmButton设置时定义ActionResult Delete

public ActionResult Delete(int id, string confirmButton) {

什么是confirmButton,因为它没有在代码中使用?我假设它返回了单击的提交按钮的名称,但它只是一个空白字符串。你怎么能得到哪个按钮被按下(例如,你可以在同一页面上有archive一个delete(或yesno)按钮)?

4

1 回答 1

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

<% } %>

你应该很高兴。

于 2010-08-09T14:31:08.113 回答