我正在尝试使用“联系人”请求表单创建一些登录页面,但是由于该表单使用“ asp-for”绑定到单独的类文件中的类,因此无法将该表单变成部分视图,显然,局部视图cshtml无法识别detail类。
在主页(视图)中实现表单时,它可以完美运行。该页面具有一个模型,该模型具有details类的属性,该属性使用asp-for绑定到表单的字段。 但是,将该表单移至局部视图,则无法识别asp-for的值,因为...它不知道其在模型中的父属性。
我觉得自己做错了。
在我的_ComtactRFormPartial.cshtml部分视图中(删除标签和样式div):
<form method="POST">
<input asp-for="Contact.Email" type="email" required name="Email"
<input asp-for="Contact.Phone" type="tel" required name="Phone"
<label asp-for="Contact.Name">שם מלא:</label>
<input asp-for="Contact.Name" type="text" required name="Name"
<input asp-for="Contact.ConPref" type="radio" name="ConPref"
id="ConPref" value="whatsapp" />
<input asp-for="Contact.ConPref" type="radio" name="ConPref"
id="ConPref" value="email" checked />
<input id="Submit1" type="submit" value="שלח" />
</form>
详细信息类:
public class ConDataFormClass
{
[Required(ErrorMessage = "אנא כתוב שם מלא"), MinLength(4,
ErrorMessage = "קצר מדי. האם הכנסת שם מלא?")]
public string Name { get; set; }
[Required(ErrorMessage = "שדה חובה", AllowEmptyStrings = false),
EmailAddress]
public string Email { get; set; }
[Required(ErrorMessage = "שדה חובה", AllowEmptyStrings = false),
Phone]
public string Phone { get; set; }
[Required]
public string ConPref { get; set; }
public bool bodymail = true;
public string bodymailCol { get; set; }
public string bodymailTtl { get; set; }
public string bodumailMsg { get; set; }
}
该类包括错误和成功消息中使用的其他字段。
现在,在托管视图中help.cshtml:
@page
@model AurlZcom.Pages.helpModel
@{
ViewData["Title"] = "Help Screen - מסך עזרה";
Layout = "~/Pages/Shared/_LandingLayout.cshtml";
}
...
@Html.Partial("_ComtactRFormPartial.cshtml")
help.cshtml.cs:
...
public class helpModel : PageModel
{
[BindProperty]
public ConDataFormClass Contact { get; set; }
public EMsendersClass esender;
public void OnGet()
{
Contact = new ConDataFormClass();
}
public async Task OnPost()
{
esender = new EMsendersClass(
sending server parameter list
);
await esender.Send(Contact,"Help Screen");
}
}
EMsendersClass是我创建的对我有用的SmtpClient warpper。 Send方法使用EMsendersClass的构造函数参数中的服务器信息,Contact中的详细信息以及常规标题字符串来发送电子邮件。
注意:在希伯来语文字的地方,您可能会看到乱码。该布局包含所有必要的元标记,并且效果很好。
由于我行动不便,因此编写最小代码是一个很大的目标,因此代码重用是“高优先级”。我希望在多个登录页面中使用该联系请求表。我该怎么办?