Как я могу создать частичное представление, которое имеет форму, которая использует динамическое связывание (asp-for)? - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь создать несколько целевых страниц с помощью формы запроса на контакт, но не могу сделать эту форму частичным, так как она использует «asp-for» для привязки к классу в отдельном файле класса.и, очевидно, частичное представление cshtml не распознает класс деталей.

При реализации формы внутри главной страницы (представление) она работает отлично.страница имеет модель, и эта модель имеет свойство класса details, которое связывается с полями формы с помощью asp-for.Но если переместить эту форму в частичное представление, значение asp-for не распознается, поскольку ... он не может знать о своем родительском свойстве в модели.

Мне кажется, что я все делаю неправильно.

Это в моем частичном представлении в _ComtactRFormPartial.cshtml (удаленные метки и элементы стиля):

<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 - это Warp SmtpClient I 'мы создали то, что работает для меня.Метод Send отправляет электронное письмо, используя информацию о сервере из параметров конструктора EMsendersClass, данные из Contact и общую строку заголовка.

Примечание: вы можете увидеть тарабарщину там, где есть текст на иврите.Макет включает в себя все необходимые метатеги и работает хорошо.

Поскольку у меня есть инвалидность, ограничивающая движение, написание минимального кода является большой целью, поэтому повторное использование кода является «высоким приоритетом».Я надеюсь использовать эту форму запроса контакта на нескольких целевых страницах.Как я могу это сделать?

...