Asp.Net Core MVC 不加载视图
Posted
技术标签:
【中文标题】Asp.Net Core MVC 不加载视图【英文标题】:Asp.Net Core MVC don't load view 【发布时间】:2021-10-06 20:07:36 【问题描述】:我正在使用 ASP.NET 核心开发 Web 应用程序,但遇到了一些问题。 当我到达一个控制器时,我将我的应用程序重定向到另一个打开页面的控制器。但是,当我到达返回应该打开的视图的控制器时,什么也没有发生,页面也没有加载。请求到达返回视图但页面未打开的控制器。奇怪的是,在为页面创建菜单选项时,一切正常并且页面已加载。 第一个控制器由 Ajax 代码调用,接收信息,然后调用另一个控制器打开另一个视图。 Ajax 代码会导致这个问题吗?
Ajax 代码
<script>
var listaDeIds = [];
function Mostrar()
var videos = document.querySelectorAll('#video');
var count = 0;
var lista = [];
for (var i = 0; i < videos.length; i++)
var videoID = videos.item(i).getAttribute("name");
const shadow = videos.item(i).shadowRoot;
const childNodes = Array.from(shadow.childNodes);
childNodes.forEach(childNode =>
if (childNode.nodeName === "DIV")
const shadowChilds = Array.from(childNode.childNodes);
shadowChilds.forEach(shadowShild =>
if (shadowShild.nodeName === "DIV")
const shadowChildsInternas = Array.from(shadowShild.childNodes);
shadowChildsInternas.forEach(interna =>
if (interna.nodeName === "INPUT")
if (interna.checked === true)
lista[count] = videoID;
count = count + 1;
);
);
);
if (lista.length > 0)
document.getElementById("btnplaylist").style.display = 'block';
else
document.getElementById("btnplaylist").style.display = 'none';
listaDeIds = lista;
$('#Playlist').click(function ()
//var url = "/Playlist/RecebeListaDeIds";
var url = "/VideoSearch/PegarListaDeIds"
var lista = listaDeIds;
$.post(url, pListaDeIds: lista , function (data)
$("#msg").html(data);
);
);
</script>
从屏幕接收数据并调用另一个控制器的控制器 1
[HttpPost]
public ActionResult PegarListaDeIds(string[] pListaDeIds)
if(AppUser.User != null)
var appCache = AppCache.Instance;
appCache.VideoId.InserirNoCache(pListaDeIds);
return RedirectToAction("CreatePlaylist", "Playlist");
else
return BadRequest("Usuário não está logado");
控制器 2 被控制器 1 调用。这个控制器在被另一个控制器调用时不会加载视图。
[HttpGet]
public ActionResult CreatePlaylist()
return View();
【问题讨论】:
您必须提交表单,ajax 不允许从操作重定向。如果要重定向到另一个控制器,则必须将重定向代码放在 ajax 中,而不是在操作中。 【参考方案1】:问题解决了。我将此 sn-p 添加到我的 Ajax 代码中,现在一切正常。
var url = '@Url.Action("CreatePlaylist", "Playlist")';
window.location.href = url.replace();
【讨论】:
以上是关于Asp.Net Core MVC 不加载视图的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core MVC 自动完成部分视图不显示结果
[MVC&Core]ASP.NET Core MVC 视图传值入门
如何让asp.net core mvc发布时候不编译cshtml视图
[MVC&Core]ASP.NET Core MVC 视图传值入门