Сохранить и отменить кнопку отправки формы - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть 2 кнопки, а именно «Сохранить» и «Отмена» на моем Profile.cshtml.Теперь мой метод выглядит примерно так:

[HttpPost]
public ActionResult Profile()
{
  //code..
}

Это сохраняет записи в базе данных.Но проблема в том, что Отмена также публикует здесь, запись сохраняется в базе данных в любом случае.Как мне справиться с этим?

Ответы [ 4 ]

2 голосов
/ 14 сентября 2011

В представлении вы можете иметь 2 формы (по одной для каждой кнопки), где действие каждой формы соответствует соответствующему методу действия в контроллере.Например, в представлении:

@using (Html.BeginForm("Save", "Profile"))
{
   <input type="submit" value="Save"/>
}

@using (Html.BeginForm("Cancel", "Profile"))
{
   <input type="submit" value="Cancel"/>
}

Затем в контроллере:

[HttpPost]
public ActionResult Save()
{
   ...
}

[HttpPost]
public ActionResult Cancel()
{
   ...
}
1 голос
/ 14 сентября 2011

Я часто использую класс viewmodel, переданный в view, и в этой viewmodel у меня есть:

public string submit { get; set; }

public bool SaveButtonClicked()
{
    return this.submit.Equals("save");
}

public bool CancelButtonClicked()
{
    return this.submit.Equals("cancel");
}

Тогда в контроллере

[HttpPost]
public ActionResult Save(MyViewModel inputViewModel)
{
    if(inputViewModel.SaveButtonClicked()) {}

   blah.......

}

Мой взгляд выглядит следующим образом

@using (Html.BeginForm())
{

   // Other stuff.
   <input type="submit" name="submit" value="Save" />
   <input type="submit" name="submit" value="Cancel" />
}

Это работает очень хорошо для меня. Когда кнопки отправки используют одно и то же имя, при нажатии любой из них это имя передается свойству submit модели представления. Не уверен, что иметь дублирующиеся имена - плохая идея, но для моих нужд это хорошо.

0 голосов
/ 14 сентября 2011

обычно у вас есть кнопка «Сохранить» для отправки формы, а «кнопка отмены» - это просто ActionLink, указывающий на ваш индекс или что-то еще.

0 голосов
/ 14 сентября 2011

Похоже, что для кнопки отмены атрибут type установлен на submit.Это заставит форму отправляться так, как если бы вы нажимали кнопку сохранения.

Вопрос, который вы должны задать себе, - это то, что вы хотите сделать кнопкой «Отмена»?Может быть, лучше сделать кнопку, которая переходит на другую страницу, если это просто случай не завершить форму, в противном случае, если вам нужно указать ее на ActionResult, вам придется сделать перенаправление, чтобы это работало.

Не стесняйтесь задавать любые вопросы, если вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...