просмотреть подтверждение ввода данных компонента - PullRequest
0 голосов
/ 21 сентября 2019

Я пытался поэкспериментировать с компонентами представления в ASP.NET Core, чтобы создать систему, основанную на «виджетах».В настоящее время у меня есть контактная форма, которая открывает модальное диалоговое окно и отображает компонент вида на основе сделанного ими выбора.Для простоты я вызываю viewcomponent следующим образом со своей страницы макета (да, я не использую vc: Convention atm):

@await Component.InvokeAsync("Inquiry")

Затем он вызовет форму запроса через:

public class InquiryViewComponent : ViewComponent
{
    private readonly ILogger<InquiryViewComponent> _logger;
    private readonly IServiceRepository _serviceRepository;

    public InquiryViewComponent(ILogger<InquiryViewComponent> logger, IServiceRepository serviceRepository)
    {
        _logger = logger;
        _serviceRepository = serviceRepository;
    }

    public async Task<IViewComponentResult> InvokeAsync()
    {
        // do stuff here like create a backing model and then return the view
        return await Task.FromResult(View("~/Views/Inquiry/Inquiry.cshtml", _viewModel));
    }
}

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

@model InquiryViewModel

 //modal initialization here
 //modal header here

@using (Html.BeginForm("Inquiry", "Inquiry"))
{
<div class="modal-body">        
    <div class="container">
        <div class="row mb-2">
            <div class="col-md-6">
                @Html.LabelFor(m => m.Inquire.FirstName, new { @class = "required" })
                @Html.TextBoxFor(m => m.Inquire.FirstName, new { @class="form-control", autocomplete="given-name", required="required" })
            </div>
            <div class="col-md-6">
                @Html.LabelFor(m => m.Inquire.LastName, new { @class = "required" })
                @Html.TextBoxFor(m => m.Inquire.LastName, new { @class = "form-control", autocomplete = "family-name", required = "required" })
            </div>
        </div>
        //OTHER FIELDS HERE
</div>
//FOOTER
}

Как только пользователь отправляет, если модель недействительна, онаотправляет назад к представлению Запрос, который я не хочу.Я понимаю, что он пытается вернуть страницу в форме (я вижу, где это происходит).Я также понимаю, что могу использовать проверку на стороне клиента, но я стремлюсь создавать более сложные виджеты и не хочу иметь кучу кода JavaScript.Что я хочу знать: если у меня есть компонент представления на основе формы, и он нуждается в проверке модели с сервера, могу ли он вернуть результат БЕЗ рендеринга страницы?Является ли эта реализация просто совершенно неверной для компонентов представления и какие другие способы более подходят?

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