Как избежать отправки формы для кнопки

#c# #asp.net-mvc #razor

#c# #asp.net-mvc #razor

Вопрос:

У меня есть две кнопки отправки и несколько текстовых полей на моей странице. Когда я ввожу данные в текстовое поле и нажимаю кнопку ввода, форма должна активировать кнопку «Начать новую». Но форма приводит в действие старую кнопку. Я не хочу добавлять on click к кнопке, потому что я проверяю некоторые условия и перенаправляю со своего контроллера. Что мне нужно сделать, чтобы моя форма не запускалась по умолчанию для кнопки со старым значением при нажатии кнопки ввода какие-либо предложения, пожалуйста?

контроллер :

 public ActionResult Index(MyModel model, string new, string old)
{ 
    if (new == "new")
    {
        if (rows > 0)
        {
            return ProcessAction();
        }
        else
        {
            return ProcessAction();
        }
    }

    if (old == "old")
    {
        if (rowsAmount > 0)
        {
            //do something
        }
        else
        {
            //do something
        }
    }

    return View();
}
  

Вид:

 @using (Html.BeginForm("Index", "Application", FormMethod.Post)) 
{
    @Html.AntiForgeryToken()
    <div class="col aligncenter">          
        <div class="form-row topMargin">               
            <div class="col-md-6 form-group">
                @Html.TextBoxFor(model => model.Email)                    
            </div>
            <div class="col-md-4 form-group">
                @Html.TextBoxFor(model => model.FirsttName)                    
            </div>
            <div class="col-md-2 form-group">
                @Html.TextBoxFor(model => model.LastName)
             </div>
        </div>
        <div class="form-row">
            <div class="col-md-9 form-group text-right">
                <button class="btn" type="submit" name="old" value="old">Get History</button>
            </div>
            <div class="col-md-3 form-group text-right">
                <button class="btn" type="submit" name=newr" value="new">Start New</button>
            </div>
        </div>
    </div>
}  

Ответ №1:

чтобы изменить отправку формы через, old button просто измените button type с type="submit" на type="button"

 <div class="form-row">
    <div class="col-md-9 form-group text-right">
        <button class="btn" type="btn" name="old" value="old">Get History</button>
    </div>
    <div class="col-md-3 form-group text-right">
        <button class="btn" type="submit" name=newr" value="new">Start New</button>
    </div>
</div>
  

Обновить

вы можете указать Get History button a click event вы можете создать Ajax call через javascript function и указать это, чтобы получить историю или привязать свою controller action ссылку к привязке и

Комментарии:

1. поскольку у них нет события щелчка, вам нужно предоставить это событие щелчка, вы можете создать функцию javascript и предоставить ее для получения истории или привязать свой контроллер к привязочной ссылке

Ответ №2:

У ваших кнопок есть type="submit" , что означает, что они отправят форму при нажатии. Вместо этого используйте type="button" , чтобы избежать отправки формы. Вы также можете использовать type="reset" , если хотите предоставить способ сброса входных данных формы.

 <form>
  First name:<br>
  <input type="text" name="firstname"><br>
  Last name:<br>
  <input type="text" name="lastname">
  <button type="button">Just a button</button>
  <button type="submit">Submit</button>
  <button type="reset">Reset the form</button>
</form>