【问题标题】:Razor page property gets empty on handler callRazor 页面属性在处理程序调用时为空
【发布时间】:2020-04-20 02:38:28
【问题描述】:

我正在使用 ASP.NET Core 并且有以下MyPage.cshtml

@page
@model MyServer.Pages.MyPageModel
@{
    ViewData["Title"] = "MyPage";
}

<h1>MyPage</h1>

@foreach (var sub in Model.Items)
{
    <div>
        <input type="checkbox" id="isSelected" checked="@sub.Value" />
        <label for="isSelected"><strong>@sub.Key</strong></label>
    </div>
}

<a asp-page-handler="Save">Save</a>

还有以下MyPage.cshtml.cs

using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace MyServer.Pages
{
    public class MyPageModel : PageModel
    {
        public Dictionary<string, bool> Items = new Dictionary<string, bool>();
        public void OnGet()
        {
            Items.Add("Item 1", true);
            Items.Add("Item 2", false);
            Items.Add("Item 3", false);
            Items.Add("Item 4", false);
            Items.Add("Item 5", true);
        }

        public void OnGetSave()
        {
            Console.WriteLine("Save button clicked!!");
        }
    }
}

我的目标是在单击 Save 元素时触发 Save() 方法。但目前它“清除”了页面上的其他数据:

如何创建一个按钮元素来触发Save() 方法来保存我的数据状态?

【问题讨论】:

标签: c# asp.net-core .net-core razor-pages asp.net-core-mvc-2.0


【解决方案1】:

我的目标是在单击 Save 元素时触发 Save() 方法。但目前它“清除”页面上的其他数据

正如@MikeBrind 提到的,请将它们放在一个表单中并为您的输入指定name 属性,如下所示。

<form method="post">
    @foreach (var sub in Model.Items)
    {
        <div>
            <input type="checkbox" id="isSelected" checked="@sub.Value" name="@sub.Key" />
            <label for="isSelected"><strong>@sub.Key</strong></label>
        </div>
    }

    <button asp-page-handler="Save">Save</button>
</form>

然后您可以访问Request.Form 集合中的选定项目并使用RedirectToPage 方法重定向到当前页面或指定页面,如下所示。

public IActionResult OnPostSave()
{
    var fb = Request.Form;

    var selected_items = string.Join(",", fb.Keys.ToList().Take(fb.Keys.Count - 1));

    //code logic to save selected items

    Console.WriteLine("Save button clicked!!");


    return RedirectToPage();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-02
    • 2020-07-05
    • 2020-05-29
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    相关资源
    最近更新 更多