Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在没有控制器的.Net MVC中使用$.get()_Jquery_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Jquery 在没有控制器的.Net MVC中使用$.get()

Jquery 在没有控制器的.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

在.Net MVC中,如果我使用JQuery
.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");
}