【发布时间】:2019-10-04 18:34:48
【问题描述】:
我对 MVC 还很陌生,我似乎在从 JS 返回视图时遇到问题。我在一个聊天网站上工作,这段代码用你指定的名字创建了一个新的聊天室。这是我的 JS 代码:
function CreateConversation() {
var conversationName = document.getElementById("conversationName").value;
var username = document.getElementById("usernameLabel").textContent;
window.location.href = "/CreateNewChat/CreateConversation?username=" + username + "&convName=" + conversationName;
}
那应该调用这个 ActionResult 方法:
public IActionResult CreateConversation(string username, string convName)
{
ChatModel model = new ChatModel(username, convName);
model.Chatters.Add(username);
return RedirectToAction("Chat","Chat", model);
}
只要我没有在文本框中输入任何对话名称,就可以。如果我检查 JS 代码,用户名和会话名称值都设置正确,但是如果我填写会话名称,则不会命中 ActionResult 方法。 这是 ChatController 中的 Chat 方法:
public IActionResult Chat(ChatModel model)
{
return View(model);
}
如果我不输入任何对话名称,它会一直用到这个方法,但它不会起作用(因为该字段是强制性的,我需要它来加载视图)。有任何想法吗?我尝试过使用 ajax,但是虽然它会传递对话名称,但它会卡在 RedirectToAction 语句中(永远不会点击 ChatController 中的 Chat 方法)。我真的迷路了。
【问题讨论】:
-
您是否尝试过通过 TempData 而不是作为参数将模型传递给 Chat 操作结果?或者也许不是在
CreateConversation中调用return RedirectToAction("Chat","Chat", model);,而是直接调用Chat操作结果...return Chat(model);。看到这个post
标签: javascript c# asp.net asp.net-mvc asp.net-mvc-4