如何解决Asp.net Core Razor Pages无法从csHTML取值到C#
客户模型
public class CustomerModel
{
[required]
public string FirstName { get; set; }
[required]
public string LastName { get; set; }
[required]
public string Contact { get; set; }
[required]
public int Notifications { get; set; }
[required]
public int InfoCollect { get; set; }
[required]
public string Email { get; set; }
public usermodel User { get; set; }
}
usermodel类
public class usermodel
{
[Key]
[required]
public string Email { get; set; }
[required]
public string Password { get; set; }
[required]
public string AccountType { get; set; }
}
}
数据上下文
public class OnlineFoodorderingWebApplicationContext : DbContext
{
public OnlineFoodorderingWebApplicationContext (DbContextOptions<OnlineFoodorderingWebApplicationContext> options)
: base(options)
{
}
public DbSet<OnlineFoodorderingWebApplication.Models.usermodel> NewUser { get; set; }
public DbSet<OnlineFoodorderingWebApplication.Models.CustomerModel> Customer { get; set; }
public DbSet<OnlineFoodorderingWebApplication.Models.StaffModel> Staff { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder
.Entity<CustomerModel>(eb =>
{
eb.HasNoKey();
});
modelBuilder
.Entity<StaffModel>(eb =>
{
eb.HasNoKey();
});
}
}
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<div class="form-label-group">
<input name="firstName" type="text" class="form-control" placeholder="First name" required="required" asp-for="Customer.FirstName" />
<label for="firstName">First name</label>
</div>
</div>
<div class="col-md-6">
<div class="form-label-group">
<input type="text" name="lastName" class="form-control" placeholder="Last name" required="required" asp-for="Customer.LastName" />
<label for="lastName">Last name</label>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="form-label-group">
<input type="email" name="inputEmail" class="form-control" placeholder="Email address" required="required" asp-for="NewUser.Email" />
<label for="inputEmail">Email address</label>
</div>
</div>
<div class="form-group">
<div class="form-label-group">
<input type="text" name="inputContact" asp-for="Customer.Contact" class="form-control" placeholder="Contact Number" required="required" />
<label for="inputContact">Contact Number</label>
</div>
</div>
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<div class="form-label-group">
<input type="password" name="inputPassword" asp-for="NewUser.Password" class="form-control" placeholder="Password" required="required" />
<label for="inputPassword">Password</label>
</div>
</div>
<div class="col-md-6">
<div class="form-label-group">
<input type="password" name="confirmPassword" class="form-control" placeholder="Confirm password" required="required" />
<label for="confirmPassword">Confirm password</label>
</div>
</div>
</div>
</div>
@if (!ViewData.ModelState.IsValid && ViewData.ModelState["Error"].Errors.Count > 0)
{
<div class="alert alert-
<strong>Error!</strong> danger">@ViewData.ModelState["Error"].Errors.First().ErrorMessage
</div>
}
<button class="btn btn-primary btn-block" type="submit"> Send Message</button>
public class RegisterModel : PageModel
{
private readonly ILogger<IndexModel> _logger;
private readonly OnlineFoodorderingWebApplication.Data.OnlineFoodorderingWebApplicationContext _context;
public RegisterModel(OnlineFoodorderingWebApplication.Data.OnlineFoodorderingWebApplicationContext context,ILogger<IndexModel> logger)
{
_context = context;
_logger = logger;
}
public void OnGet()
{
}
public IActionResult Create()
{
return Page();
}
[BindProperty]
public CustomerModel Customer { get; set; }
[BindProperty]
public usermodel NewUser { get; set; }
public IActionResult OnPost()
{
if (ModelState.IsValid == false)
{
NewUser.AccountType = "Customer";
ModelState.AddModelError("Error","This is Error"+ NewUser.AccountType+ NewUser.Password+Customer.LastName);
return Page();
}
Customer.Notifications = 1;
Customer.InfoCollect = 1;
_context.NewUser.Add(NewUser);
return RedirectToPage("/Index");
}
}
有一个错误,我无法从html输入的OnPost方法中获取“ NewUser”数据。 但是,“ Customer”似乎是一样的,但是“ Customer”运行良好,能够从输入中获取数据。
解决方法
为了使您的OnPost
方法捕获html输入参数,您必须将它们包装在form
标记内。因此,您的注册页面HTML 必须如下所示:
<form method="post">
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<div class="form-label-group">
<input name="firstName" type="text" class="form-control" placeholder="First name" required="required" asp-for="Customer.FirstName" />
<label for="firstName">First name</label>
</div>
</div>
<div class="col-md-6">
<div class="form-label-group">
<input type="text" name="lastName" class="form-control" placeholder="Last name" required="required" asp-for="Customer.LastName" />
<label for="lastName">Last name</label>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="form-label-group">
<input type="email" name="inputEmail" class="form-control" placeholder="Email address" required="required" asp-for="NewUser.Email" />
<label for="inputEmail">Email address</label>
</div>
</div>
<div class="form-group">
<div class="form-label-group">
<input type="text" name="inputContact" asp-for="Customer.Contact" class="form-control" placeholder="Contact Number" required="required" />
<label for="inputContact">Contact Number</label>
</div>
</div>
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<div class="form-label-group">
<input type="password" name="inputPassword" asp-for="NewUser.Password" class="form-control" placeholder="Password" required="required" />
<label for="inputPassword">Password</label>
</div>
</div>
<div class="col-md-6">
<div class="form-label-group">
<input type="password" name="confirmPassword" class="form-control" placeholder="Confirm password" required="required" />
<label for="confirmPassword">Confirm password</label>
</div>
</div>
</div>
</div>
@if (!ViewData.ModelState.IsValid && ViewData.ModelState["Error"].Errors.Count > 0)
{
<div class="alert alert-
<strong>Error!</strong> danger">@ViewData.ModelState["Error"].Errors.First().ErrorMessage
</div>
}
<button class="btn btn-primary btn-block" type="submit"> Send Message</button>
</form>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。