Как я должен получить ввод формы и отправить этот ввод классу C #? ASP.Net Core - бритвенные страницы

Неглубокая копия с одним слоем ( 5-е издание ECMAScript ):

var origin = { foo : {} };
var copy = Object.keys(origin).reduce(function(c,k){c[k]=origin[k];return c;},{});

console.log(origin, copy);
console.log(origin == copy); // false
console.log(origin.foo == copy.foo); // true

И мелкая копия с одним слоем ( ECMAScript 6-е издание , 2015 ):

var origin = { foo : {} };
var copy = Object.assign({}, origin);

console.log(origin, copy);
console.log(origin == copy); // false
console.log(origin.foo == copy.foo); // true

-1
задан SuperTal3 25 March 2019 в 19:46
поделиться

2 ответа

Для простоты вы можете отправлять информацию с клиента на сервер с привязкой Razor Model.

Для Bazor Model Binding вам необходимо использовать [BindProperty].

Вот рабочая демонстрация:

IndexModel

public class IndexModel : PageModel
{
    public void OnGet()
    {

    }
    [BindProperty]
    public EmailConfig emailConfig { get; set; }
    public ActionResult OnPostSendEmail()
    {
        var email = emailConfig;
        return null;
    }
    public class EmailConfig
    {
        public string FromAddr { get; set; }
        //public string ToAddr { get; set; }
        public string Body { get; set; }
        public string Subject { get; set; }
        public string Phone { get; set; }
        public string Name { get; set; }
        public string LastName { get; set; }
    }
}

Для страницы бритвы клиента не нужно указывать id="Name" type="text" name="name", и вы не должны добавлять [ 115] при использовании asp-page-handler="sendemail"

<form asp-page-handler="sendemail" id="contact-form" method="post">
    <div class="messages"></div>
    <div class="controls">
        <div class="row">
            <div class="col-md-6">
                <input asp-for="emailConfig.Name" placeholder="Your firstname *" required="required" class="form-control">
            </div>
            <div class="col-md-6">
                <input asp-for="emailConfig.LastName" placeholder="Your lastname *" required="required" class="form-control">
            </div>
            <div class="col-md-6">
                <input asp-for="emailConfig.FromAddr" placeholder="Your email *" required="required" class="form-control">
            </div>
            <div class="col-md-6">
                <input asp-for="emailConfig.Phone" placeholder="Your phone" class="form-control">
            </div>
            <div class="col-md-12">
                <textarea asp-for="emailConfig.Body" placeholder="Message for me *" rows="4" required="required" class="form-control"></textarea>
            </div>
            <div class="col-md-12 text-center">
                <button type="submit" asp-route-data="HttpPostAttribute" asp-page-handler="SendEmail" class="btn btn-outline-primary">Send message</button>
            </div>
        </div>
    </div>
</form>
0
ответ дан Tao Zhou 25 March 2019 в 19:46
поделиться

Я думаю, что имя вашего входного параметра отличается от того, что вы публикуете в ajax-коде OnPostSendEmail (строка fromAddr , строка subject , строка body , строка ) телефон , строка firstName , строка LastName )

, и это часть данных кода ajax:

     data: {
                 **FromAddr**: $("#CommentText").val(),
                 **Phone**: $("#Phone").val(),
                 **Subject**: $("#Subject").val(),
                 **Message**: $("#Message").val(),
                 **FirstName**: $("#FirstName").val(),
                 **LastName**: $("#LastName").val()
             },

параметры данных Ajax имя должно совпадать с кодом C #.

0
ответ дан Razmik Ghookas 25 March 2019 в 19:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: