【发布时间】:2019-02-26 02:31:09
【问题描述】:
请帮助我理解为什么在使用 TagHelper 与标准输入元素时页面显示“MyProperty”的过时值?
正在 Razor 页面的 OnPost 方法中修改该值。在 OnPost 之后,TagHelper 输入显示的是在帖子中发送的值,但非标记帮助器输入显示的是实际的最新值。
示例页面模型:-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WebApplication1.Pages.Test
{
public class TestModel : PageModel
{
[BindProperty]
public string MyProperty { get; set; } = null;
public void OnGet()
{
MyProperty = "Default value";
}
public PageResult OnPost()
{
MyProperty = "Posted value overwritten by some logic";
return Page();
}
}
}
示例剃须刀页面:-
@page
@model WebApplication1.Pages.Test.TestModel
<form asp-antiforgery="true">
<p><input value="@Model.MyProperty" readonly /></p>
<p><input asp-for="MyProperty" /></p>
<button type="submit">Post data</button>
</form>
在初始页面加载 (OnGet) 时,值是相同的,但如果您点击提交按钮来触发帖子,则每个输入中呈现的值不同?
【问题讨论】:
标签: c# asp.net razor asp.net-core asp.net-core-2.1