Что такое `verifyButton` в ActionResult Delete NerdDinner? - PullRequest
0 голосов
/ 09 августа 2010

В демонстрационном приложении NerdDinner MVC определено confirmButton при настройке ActionResult Delete:

public ActionResult Delete(int id, string confirmButton) {

Для чего нужно confirmButton, поскольку оно не используется в коде?Я предположил, что он вернул имя кнопки отправки, на которую нажали, но это просто пустая строка.Как узнать, какая кнопка была нажата (например, на одной странице могут быть кнопки archive и delete (или yes, no))?

1 Ответ

1 голос
/ 09 августа 2010

Если вы посмотрите на представление 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" />        

<% } %>

Как вы можете видеть, здесь есть поле verifyButton, и значение будет передано в 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" />        

<% } %>

И тебе надо идти.

...