【发布时间】:2021-04-25 03:49:25
【问题描述】:
我上次搞砸了,所以让我们看看这次我能不能把它弄好。我试图首先弄清楚将 Ajax 放在哪里以及如何将它放在我的控制器中。首先我的控制器看起来像这样 [更新] 我试图让我的消息弹出而不刷新。它可以在没有 ajax 的情况下工作我只需要有人解释在哪里放置 ajax 以及如何与之交互。我不想要警报,我希望在该部分中更新消息。在答案中,我试图弄清楚他在说什么,但这就是我点击发送时得到的结果
{"htmlMsg":"data addes to database successfull","htmlBody":"","success":true}
我不想看到这个我希望它只是更新消息部分。我的目标还没有实现,所以我完全糊涂了。
在我添加推荐的 ajax 之前,您会看到它在工作的图像。现在它会将我转到另一个页面。
[HttpGet("wall")]
public IActionResult Wall(int userID)
{
ViewBag.User = GetUserInDB();
// if(ViewBag.User == null)
// {
// return RedirectToAction("Index");
// }
ViewBag.Messages = DBContext.Messages
.Include(i => i.Messenger)
.ToList();
return View();
}
[HttpPost("NewMessage/Add")]
public IActionResult NewMessage( Message newMessage)
{
User userInDB = GetUserInDB();
Message thisMessage = newMessage;
System.Console.WriteLine(newMessage.TheMessage);
thisMessage.UserID = userInDB.UserID;
DBContext.Messages.Add(thisMessage);
DBContext.SaveChanges();
return RedirectToAction("Wall");
}
我要做的是将大纲更改为它,因为我知道我需要做这样的事情
[HttpPost("NewMessage/Add")]
public JsonResult NewMessage( Message newMessage)
{
User userInDB = GetUserInDB();
Message thisMessage = newMessage;
thisMessage.UserID = userInDB.UserID;
DBContext.Messages.Add(thisMessage);
DBContext.SaveChanges();
return Json(thisMessage);
}
这是正确的吗?还是我需要做其他事情?
其次,我真的无法弄清楚 HTML 部分的第二部分。原来我有
@model Message
<div class="jumbotron p-2 m-3">
<a href="/"><img class="logo" src="/images/melysLogo.jpg" alt="Logo Image"> </a>
@if (ViewBag.User == null)
{
<a class="mr-2" href="/LoginOrRegister">Login Or Register</a>
}
else
{
<a href="/logout">Logout</a> <span>|</span>
<a href="/AddRecipe"> Add Recipe</a><span>|</span>
<a class="mr-2" href="/">Dashboard</a>
}
<span style="font-size:x-large;">Melly's Underground Cuisine</span>
</div>
<style>
.messageboard {
width: 97%;
height: 600px;
background-color: black;
color: white;
}
</style>
<div class="messageboard m-3 p-3 rounded">
<div class="m-3 p-3 sizeclass">
@foreach (Message message in ViewBag.Messages)
{
<div class="d-flex justify-content-around m-3 p-3 ">
<div class="p-2 rounded largeLabel border">@message.TheMessage </div>
<div class="p-2 rounded smallLabel border d-flex justify-content-center align-items-center">
@message.Messenger.FirstName
</div>
</div>
}
</div>
</div>
<footer class="m-4">
@if (ViewBag.User != null)
{
<form asp-action="NewMessage" asp-controller="Home" a method="post">
<input class="form-control-lg inputLabel m-1 " asp-for="TheMessage">
<button class="btn btn-outline-primary btn-warning m-2" type="submit">Send</button>
</form>
}
</footer>
我已经尝试过,但不明白成功部分的内容。我也不知道什么类,或者我应该在我尝试过的数据中为消息本身命名或标识,但我仍然迷路了
<script type="text/javascript">
$(function () {
$("#btnGet").click(function () {
$.ajax({
type: "POST",
url: "/Home/NewMessage",
data: { "name": $(".messageboard").val() }, //I am also guessing the class is probably wrong as well
success: function (response) {
//what do I put here is what I am confused about as well
},
failure: function (response) {
console.log(response.failure)
},
error: function (response) {
console.log(response.error);
}
});
});
});
</script>
我也很想知道对于 c# 和 .net 核心是否不值得使用 vs 代码,谢谢你对我的最后一个问题感到非常抱歉。我没有正确遵守指南
【问题讨论】:
-
更新前的全部代码都在我的 git hub github.com/althepal78/melskitchen
-
那么问题是什么?
-
我的 JSon 请求是否正确,我对成功调用究竟做了什么让我感到困惑。我正在尝试让页面在创建新消息时更新一条消息,不知道该怎么做
-
请edit您的问题为该问题设置标题,而不仅仅是一系列关键字。请参阅How to Ask,标题为“写一个总结具体问题的标题”的部分。
-
我把ajax脚本放在你可以看到的页脚底部