ASP. Net Core MVC Отключить проверку при нажатии определенной кнопки c - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть 2 кнопки в форме, кнопка «Отправить» и «Сохранить». Я хочу иметь возможность пропустить все проверки, когда пользователь нажимает кнопку Сохранить. Я пытался добавить class="cancel", formnovalidate, formnovalidate="formnovalidate", disableValidation="true" к кнопке Сохранить, но ни один из них не работал. Любая помощь будет замечательной! Я использую ASP. NET Core 3.1.

Форма

<form asp-action="Request">
...
...
<input name="answer" type="submit" value="Submit" class="btn btn-primary" />
<input name="answer" type="submit" value="Save" class="btn btn-secondary" />
</form>
<partial name="_ValidationScriptsPartial" />

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

Во-первых, вам нужно знать, что если вы используете _ValidationScriptsPartial, он сгенерирует html, как показано ниже:

Generate cs html from:

<input asp-for="MyDate" class="form-control" />

to Атрибут:

<input class="form-control" type="date" data-val="true"
    data-val-required="The MyDate field is required."
    id="MyDate" name="MyDate" value="">

formnovalidate и class="cancel" может пропускать проверку на стороне клиента, но не может пропускать проверку на стороне сервера.

Чтобы устранить эту проблему, можно очистить модель состояние:

1.Модель:

public class Test
{
    public int Id { get; set; }
    public string Name { get; set; }
}

2.Просмотр (добавить formnovalidate к save input):

@model Test
<form asp-action="Request">
    <div>
        Name:<input asp-for="Name" />
        <span asp-validation-for="Name" class="text-danger"></span>
    </div>
    <div>
        Id:<input asp-for="Id" />
        <span asp-validation-for="Id" class="text-danger"></span>
    </div>
    <input name="answer" type="submit" value="Submit" class="btn btn-primary" />
    <input name="answer" type="submit" value="Save" formnovalidate class="btn btn-secondary" />
</form>
@section Scripts {
    <partial name="_ValidationScriptsPartial" />
}

3.Действие:

[HttpPost]
public IActionResult Request(Test test)
{
    if (!ModelState.IsValid)
    {
         ModelState.Clear();
         return View("Index");
    }
    return View("Index");
}

4.Результат: enter image description here

0 голосов
/ 27 февраля 2020
<form asp-action="Request">
...
...
<input name="answer" type="submit" value="Submit" class="btn btn-primary" />
<input name="answer" type="submit" value="Save" class="btn btn-secondary cancel" />
</form>

@section Scripts{
<partial name="_ValidationScriptsPartial" />
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...