Я хотел бы создать вид с 2 частичными видами:
первый - это весь разговор, а второй - форма, позволяющая отправить новое сообщение
первое представление должно обновляться каждые X секунд (скажем, 5 секунд), но в это время пользователь должен написать сообщение в
В контроллере (сообщения) у меня есть следующие методы:
[HttpGet]
public ViewResult Index()
{
var vm = _manager.GetAllConversations();
return View(vm);
}
[HttpGet]
public ViewResult Details(int speakerId)
{
_speakerId = speakerId;
var vm = _manager.GetConversation(_speakerId);
return View(vm);
}
[HttpPost]
public IActionResult SendMessage(SendMessageViewModel vm)
{
_manager.SendMessage(vm.SpeakerId, vm.Content);
return RedirectToAction("Details", vm.SpeakerId);
}
и у меня есть следующие представления
Подробности:
<div class="col-md-6" id="conversationDiv">
<script type="text/javascript">
setInterval("$('#conversationDiv').load('Messages/Details/1')", 2000);
</script>
@foreach (var speak in Model)
{
<div>@speak.SendDate @speak.SenderName</div>
<div>@speak.Message</div>
<hr />
}
</div>
<div>
@{
await Html.RenderPartialAsync("SendMessage",
new RandevouMVC.ViewModels.Messages.SendMessageViewModel());
}
</div>
и частичное представление SendMessage:
<form asp-controller="Messages" asp-action="SendMessage" method="post">
<textarea asp-for="Content" class="form-control" rows="4" placeholder="message content...">
</textarea>
<button type="submit" class="btn btn-primary">Send</button>
</form>
но скрипт обновления JQuery не работает ...
в Shared / _Layout.cshtml у меня есть:
<environment include="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
но jquery пытается загрузить не
localhost:port/messages/details/1
но:
localhost:port/messages/details/1/~/messages/details/1