[英]Razor page property gets empty on handler call
我正在使用 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()
方法来保存我的数据状态?
我的目标是在单击 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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.