Как передать значения из View в метод Controller с помощью JavaScript?в ядре asp .net - PullRequest
0 голосов
/ 22 мая 2018

У меня есть какой-то мессенджер, рядом с которым я вижу все свои контакты.Я хочу, чтобы я щелкнул один из них, чтобы передать номер телефона и Id моему контроллеру , чтобы отправить сообщение и сохранить его в базе данных.
Foreach печатает все мои контакты:

@foreach (var contact in Model.Contacts)
                {
                    <div class="chatperson" onclick="get_contact_number(@contact.PhoneNumber , @contact.ContactId)">
                        <div class="namechat">
                            <div class="pname">
                                @contact.Name
                                <a asp-action="ContactDetails" asp-route-id="@contact.ContactId" class=" glyphicon glyphicon-info-sign"></a>
                                <a asp-action="EditContact" asp-route-id="@contact.ContactId" class=" glyphicon glyphicon-pencil "></a>
                            </div>
                            <div class="lastmsg">@contact.PhoneNumber </div>
                        </div>
                    </div>
                }


В div я использовал метод JS и передал туда значения:

function get_contact_number(contactNumber, contactId) {
    @Model.PhoneNr = contactNumber;
    @Model.ContactId = contactId;
}

В конце я хочу передатьэти значения для моей функции контроллера

 public IActionResult SendMessage(MessengerViewModel model, string phoneNumber, string message)
    {
        var CurrentUserId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;
        if (ModelState.IsValid)
        {
            var newMessage = new Message();

            newMessage.UserId = CurrentUserId;
            newMessage.ContactId = model.ContactId;
            newMessage.Body = model.MessageBody;
            newMessage.Date = DateTime.Now;
            newMessage.isDelivered = true;
            _messageService.AddMessage(newMessage);

            AtSmsSender smsSender = new AtSmsSender();
            message = model.MessageBody;
            phoneNumber = model.PhoneNr;
            smsSender.SendSms(phoneNumber, message);

            return RedirectToAction("Index", "Messenger");
        }
        else
        {
            return RedirectToAction("Index", "Messenger");
        }
    }

1 Ответ

0 голосов
/ 22 мая 2018

Вы можете сделать ajax-вызов из функции get_contact_number.Что-то вроде кода ниже

$.ajax({
    type:'GET',
    url: '@Url.Action("ActionName", "ControllerName")',
    async:true,
    success:function(response){
        //Do Something With response object returned by your action
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...