Получить запрос от RazorPage с ViewComponent - PullRequest
0 голосов
/ 11 апреля 2019

Я использую ViewComponent в Razor Page с условием, и каждый Viewcomponent является отдельным, Моя страница бритвы "/Subfolder/Index.cshtml"

<div class="row">
<div class="col-md-4">
    @await Component.InvokeAsync("RightMenu")
</div>
<div class="col-md-8">
    @if (Model.SIndex != 0)
    {
        @await Component.InvokeAsync("SubContent", new { id = Model.SIndex })

    }

    @if (Model.SIndex == 15)
    {
        <div class="row">
            <div class="col-md-12">
                <form method="post">
                    @await Component.InvokeAsync("QuestionUs", new { askLibrarian = new Lib.Model.AskLibrarian() })
                    <div class="form-group">
                        <input type="submit" value="ask Question" class="btn btn-default" asp-page-handler="question" />
                    </div>
                </form>
            </div>
        </div>
    }


</div>

и код этогоis "/subfolder/index.cshtml.cs"

 public class IndexModel : PageModel
{
    private readonly Lib.Model.LibContext _context;
    [BindProperty]
    public int SIndex { get; set; }
    public async Task OnGet(int Id)
    {
            SIndex = Id;
    }
    [BindProperty]
    public AskLibrarian AskLibrarian { get; set; }

    public async Task<IActionResult> OnPostquestionAsync()
    {
        if (!ModelState.IsValid)
        {
            return Page();
        }

        _context.AskLibrarians.Add(AskLibrarian);
        await _context.SaveChangesAsync();

        return RedirectToPage("./Index");
    }
}

Теперь "questionViewcomponent" - это простая форма, которая отображает множество элементов ввода в "/subfolder/component/questionus/default.cshtml"

@model Lib.Model.AskLibrarian

        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="form-row">
            <div class="form-group col-md-6">
                <label asp-for="FullName" class="control-label"></label>
                <div class="input-group mb-2 mr-sm-2">
                    <div class="input-group-prepend">
                        <div class="input-group-text"><i class="fas fa-user"></i></div>
                    </div>
                    <input asp-for="FullName" class="form-control" />
                    <span asp-validation-for="FullName" class="text-danger"></span>
                </div>
            </div>
            <div class="form-group col-md-6">
                <label asp-for="Email" class="control-label"></label>
                <div class="input-group mb-2 mr-sm-2">
                    <div class="input-group-prepend">
                        <div class="input-group-text"><i class="fas fa-envelope"></i></div>
                    </div>
                    <input asp-for="Email" class="form-control" />
                    <span asp-validation-for="Email" class="text-danger"></span>
                </div>
            </div>
        </div>
        <div class="form-row">
            <div class="form-group col-md-4">
                <label asp-for="LibraryNameId" class="control-label"></label>
                <div class="input-group mb-2 mr-sm-2">
                    <div class="input-group-prepend">
                        <div class="input-group-text"><i class="fas fa-book"></i></div>
                    </div>
                    <select asp-for="LibraryNameId" class="form-control" asp-items="ViewBag.LibraryNameId"></select>
                </div>
            </div>
            <div class="form-group col-md-8">
                <label asp-for="Subject" class="control-label"></label>
                <div class="input-group mb-2 mr-sm-2">
                    <div class="input-group-prepend">
                        <div class="input-group-text"><i class="fas fa-book-reader"></i></div>
                    </div>
                    <input asp-for="Subject" class="form-control" />
                    <span asp-validation-for="Subject" class="text-danger"></span>
                </div>
            </div>

        </div>
        <div class="form-group">
            <label asp-for="Text" class="control-label"></label>
            <textarea asp-for="Text" class="form-control" style="min-height:250px;"></textarea>
            <span asp-validation-for="Text" class="text-danger"></span>
        </div>

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

1 Ответ

0 голосов
/ 13 апреля 2019

Через долгое время моя проблема решена путем удаления

 <input type="submit" value="ask Question" class="btn btn-default" asp-page-handler="question" />

и добавления в форму тега

<form method="post" sp-page-handler="question">
...