Jquery 在没有控制器的.Net MVC中使用$.get()
在.Net MVC中,如果我使用JQueryJquery 在没有控制器的.Net MVC中使用$.get(),jquery,asp.net-mvc,asp.net-mvc-4,Jquery,Asp.net Mvc,Asp.net Mvc 4,在.Net MVC中,如果我使用JQuery.get()方法从服务器抓取文件,我仍然需要在控制器方法上编写渲染以显示其内容吗?JQuery示例: function RenderPartialView(view, contentcontainer, maskcontainer, params) { $.get(view, params, function (data) { $("#" + contentcontainer).html(data); $(mas
.get()
方法从服务器抓取文件,我仍然需要在控制器方法上编写渲染以显示其内容吗?JQuery示例:
function RenderPartialView(view, contentcontainer, maskcontainer, params) {
$.get(view, params, function (data) {
$("#" + contentcontainer).html(data);
$(maskcontainer).unmask();
});
}
function displayExpandedView() {
$('.expand-btn').on('click', function () {
$(".expanded-view").modal();
RenderPartialView("../some_dir/SomeView", "expanded-view", "#expanded-view", null);
})
}
所以,当我运行displayExpandedView()函数时,我想用SomeView文件的内容填充一个充当模态的div。当我当前尝试在应用程序中执行此操作时,服务器返回404错误,表示找不到该文件,即使该文件的路径是正确的。使用此方法,我仍然需要一个控制器返回PartialView()
?我以为我不会
使用此方法,我仍然需要一个控制器返回PartialView()?我以为我不会
是的,您仍然需要控制器返回局部视图。请记住,当您使用ASP.NET的Render.PartialView时,这是在服务器端发生的,因此所有适当的工作都在生成HTML。但是,当您使用jQuery进行调用时,您不能像那样直接从客户机访问HTML(如果可以的话,这样做将不是一个好的做法)。相反,您需要调用控制器操作(或a)以。您需要了解RenderPartial和RenderAction是服务器端代码,并且在将页面交付给客户端时,它们都会被实际的HTML替换。如果查看结果页面的源代码,您将看到行RenderPartialView(../some_dir/SomeView”,“expanded view”,“expanded view”,null)
将替换为从该部分视图呈现的HTML,该部分视图在该函数的上下文中不是有效的javascript。也就是说,如果部分审查返回某个东西
,那么javascript函数将变为
function displayExpandedView() {
$('.expand-btn').on('click', function () {
$(".expanded-view").modal();
<div>Something</div>
})
行动:
public ViewResult ActionName()
{
return View("ViewName");
}
。/some\u dir/SomeView
指向的资源是什么?它是一个内容文件还是一个路由?当您直接在浏览器上查看“/some\u dir/SomeView”时会发生什么?它将是一个.cshtml文件。.cshtml
文件需要一个控制器来呈现它们。您不能直接显示.cshtml
文件。好的,谢谢,我想可能是这样。不确定您是否认为我正在尝试这样做,但是,我在上面的示例中使用的RenderPartialView函数是我自己使用Javascript的函数。我没有试图使用服务器端代码。@Stavros_S A 404将表明。/some_dir/SomeView“
可能不是您操作的正确URL。它不是指向视图的路径,它需要是一个将路由到控制器的URL。您是否在控制器操作中设置了断点以查看其是否被命中?尝试更改为RenderPartialView('@Url.Action(“SomeView”)“,
假设SomeView是当前控制器中某个操作的名称。另外,为了确保您理解,您不能直接执行Get to a view/cshtml,它必须是一个控制器操作。Url.action是不需要的,只要您正确获取操作的Url,但由于此帮助程序将为您生成Url,因此它可以帮助您消除你可能犯的错误。是的,我最初的印象是(愚蠢地)我可以直接进入cshtml页面,就像它是一个标准的html页面一样。
public ViewResult ActionName()
{
return View("ViewName");
}