我有一个页面,收集用户的姓名首字母和输入日期。然后我把它传递到二级页面,在那里将进行一些输入工作,但我还没有能够得到首字母或输入日期显示在二级页面的HTML中。
我用这个将Initial和EntryDate从索引页传递到Add页。
public IActionResult OnPost()
{
if (!ModelState.IsValid)
{
return Page();
}
return RedirectToPage("Add", "User",
new { User.EntryDate, User.Initials});
}
我可以通过在Add页面上设置一个断点来确认对象(Initals,EntryDate)是否进入了第二个页面。
public void OnGet(UserModel user)
{
Initials = user.Initials;
EntryDate = user.EntryDate;
}
最后,我可以将Initials和EntryDate从User对象转移到Item对象,以便在将数据提交到数据库时将Initials和EntryDate包含在OnPost中。
[ViewData]
[BindProperty]
public DateTime EntryDate { get; set; }
[ViewData]
[BindProperty]
public string Initials { get; set; }
public async Task<IActionResult> OnPost()
{
if (!ModelState.IsValid)
{
return Page();
}
Initials = User.Initials;
EntryDate = User.EntryDate;
ItemModel item = new ItemModel();
item.UserId = Initials;
item.TransferDate = EntryDate;
item.ItemNumber = Item.ItemNumber;
item.FromLocation = Item.FromLocation;
item.ToLocation = Item.ToLocation;
item.Quantity = Item.Quantity;
await item.InsertAsync();
return RedirectToPage("/Index");
}
我正在努力的部分是,我想在加载时在添加页面的顶部显示姓名首字母和输入日期。
<div class="row">
<div class="col-md-4">
Initials: @Html.DisplayFor(User => User.User.Initials)
<br />
Entry Date: @Html.DisplayFor(User => User.User.EntryDate)
</div>
</div>
当我点击OnPost时,我确实注意到@Html.DisplayFor上显示了姓名首字母和输入日期。我的问题是,我希望它们显示在OnGet上(在添加页面上的表单输入任何数据之前)。
我意识到我发布代码的方式可能会让人感到困惑,所以我打算发布整个页面。
public class AddModel : PageModel
{
[ViewData]
[BindProperty]
public DateTime EntryDate { get; set; }
[ViewData]
[BindProperty]
public string Initials { get; set; }
[BindProperty]
public ItemModel Item { get; set; }
[BindProperty]
public UserModel User { get; set; }
public void OnGet(UserModel user)
{
Initials = user.Initials;
EntryDate = user.EntryDate;
}
public async Task<IActionResult> OnPost()
{
if (!ModelState.IsValid)
{
return Page();
}
Initials = User.Initials;
EntryDate = User.EntryDate;
ItemModel item = new ItemModel();
item.UserId = Initials;
item.TransferDate = EntryDate;
item.ItemNumber = Item.ItemNumber;
item.FromLocation = Item.FromLocation;
item.ToLocation = Item.ToLocation;
item.Quantity = Item.Quantity;
await item.InsertAsync();
return Page();
//return RedirectToPage("/Add");
//return RedirectToPage("/Index");
}
}
1条答案
按热度按时间cnwbcb6i1#
从你的描述,你似乎想直接到
Add
页面与一些值,然后加载添加页面与这些值最后提交从这些值,我创建一个演示重现您的问题,希望它可以给予你一些帮助。Add.cshtml.cs
Add.cshtml