Как я могу опубликовать модель на контроллере из представления? - PullRequest
0 голосов
/ 18 июня 2019

В настоящее время я отправляю текстовую область и список элементов для просмотра через тело http. Однако сейчас я пытаюсь перейти к более элегантному решению и хочу отправить его в качестве модели. Я посмотрел в Интернете, и я не могу найти ничего, что поможет мне понять.

Я знаю, что вы можете опубликовать данные в html, используя "html.beginForm" и просто используя тег "form". Я использую тег формы для отправки своих товаров. Как добавить модель в этот тег, чтобы данные, отправленные по почте, имели желаемый формат

<form name="message" id="message" action="/message/" method="post">
<ul id="list">
    <li style="list-style-type:disc;">E-mail: <input type="email" name="emailaddress" required></li>
</ul>

<p><button type="button" onclick="addEmailField()">Add email</button></p>
<script>
    function addEmailField() {
        var ul = document.getElementById("message").getElementsByTagName("UL")[0];
        if (ul.childElementCount < 25) {
            var li = document.createElement("li");
            li.innerHTML = "<li>E-mail: <input type='email' name='emailaddress' required></li>";
            ul.appendChild(li);
        } else {
            alert("Reached limit of 25 emails, can not add more");
        }
    }
</script>

<p><button type="button" onclick="removeEmailField()">Remove email</button></p>
<script>
    function removeEmailField() {
        var ul = document.getElementById("message").getElementsByTagName("UL")[0];
        if (ul.childElementCount > 1) {
            ul.removeChild(ul.lastChild);
        }
    }
</script><br><br><br>

<h3>Message</h3>
<textarea name="textarea" style="width:750px;height:300px;resize:none;" maxlength="3500" ; required></textarea><br>
<input type="submit" value="Submit" />
</form>

моя модель:

using System;
using System.Collections.Generic;
using System.Text;

namespace OneTimeTool.Models
{
    public class ClientInput
    {
        public string[] Emails { get; set; }

        public string Message { get; set; }

    }
}

я хочу иметь возможность использовать объект в контроллере для доступа к значениям (список электронных писем и текстовое поле) вместо того, чтобы вручную извлекать их из тела.

    [HttpPost]
    public IActionResult message(ClientInput model)

1 Ответ

0 голосов
/ 18 июня 2019

Как и @Dilip, вы можете использовать ajax-вызов для передачи данных в виде строки в контроллер.

Добавьте идентификатор к своей текстовой области, такой как _message

var textareaMessage = $("#_message").val();.

var json = '{textarea: "' + textareaMessage  + '"}'; 

$.ajax({
    url:'@Url.Action("//Action", "//Controller")',
    type:'POST',
    data: json,
    contentType:'Application/json',
    success:function(result){
        //Do whatever
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...