Jquery 如何从脚本调用局部视图函数?

Jquery 如何从脚本调用局部视图函数?,jquery,model-view-controller,Jquery,Model View Controller,我正在开发MVC应用程序 我想从作为视图脚本的函数调用部分视图(在控制器中没有任何方法) 但它不起作用 $('#PurchaseOrderId').blur(function (){ @Html.Partial("ReturnsOfSinglePO") }); 您将服务器端razor命令和客户端JavaScript混为一谈 对于部分视图加载,忽略此位 您可以将页面URL注入JavaScript(如果它在razor页面中),但需要通过$.ajax调用或类似调用加载它(或设置

我正在开发MVC应用程序

我想从作为视图脚本的函数调用部分视图(在控制器中没有任何方法)

但它不起作用

$('#PurchaseOrderId').blur(function (){
           @Html.Partial("ReturnsOfSinglePO")
});

您将服务器端razor命令和客户端JavaScript混为一谈

对于部分视图加载,忽略此位 您可以将页面URL注入JavaScript(如果它在razor页面中),但需要通过$.ajax调用或类似调用加载它(或设置window.location以进行简单重定向)

例如 这会将URL注入JavaScript常量,并将其分配给blur上的window.location:

$('#PurchaseOrderId').blur(function (){

           window.location = '@Url.Action("ReturnsOfSinglePO")';
});
但是javascript必须在视图中,Razor注入才能工作

如果Javascript不在同一个razor页面上,您可以将页面位置作为
data-
属性注入页面上的属性(例如DIV容器),并在客户端代码中提取该属性

$('#PurchaseOrderId').blur(function (){
           window.location = $('.someClassYouAdded').data('url');
});
这假设您已将页面URL注入视图,如下所示:

   <div class="someClassYouAdded" data-ulr="@Url.Action("ReturnsOfSinglePO")"/>
这假设您的部分视图位于
Views/currentcontrollername/ReturnsOfSinglePO.cshtml
/Views/Shared/ReturnsOfSinglePO.cshtml

这将接收一个传入的URL请求,如
/currentcontrollername/ReturnsOfSinglePO
,并返回您的部分视图

当然,如果您这样做,您可以在Jquery中硬连接URL:

$('#PurchaseOrderId').blur(function (){

           $('.someClassYouAdded').load('/currentcontrollername/ReturnsOfSinglePO');
});
其中,
someClassYouAdded
是添加到要用局部视图填充的元素中的类。
我确信还有其他方法可以做到这一点,但您必须明确地将服务器端HTML生成与客户端代码(至少在您的头脑中)分离开来:)

您将服务器端razor命令和客户端javascript混为一谈。您可以将页面URL插入Javascript(如果它在razor页面中),但需要通过
$调用或类似调用(或设置window.location进行简单重定向)加载它。thnaks,您有任何示例吗…已经完成了下面的工作,但是你的问题对于部分视图和你想用它做什么是非常模糊的:)如果你提供一个清晰的页面和部分视图示例,它可能会更有意义,并且会允许一个与你的代码匹配的特定答案。达成协议。如果你能提供所要求的详细信息,我将添加一个新的答案,其中只包含你需要的部分:)我在控制器中没有用于此局部视图的方法。。。它返回错误…服务器端需要返回部分视图(将URL映射到服务器代码)。你必须在某个地方有一个控制器方法,才能使局部视图工作。我不认为它需要。。。如果我在局部视图中有简单的单行文本会怎么样?我应该在控制器中为它写单独的方法吗?是的。调用它
returnsofminglepo
以匹配视图名称,它只需要执行
returnpartialview()。谢谢你的努力…但是你把我弄糊涂了。。。我到底该怎么办?
$('#PurchaseOrderId').blur(function (){

           $('.someClassYouAdded').load('/currentcontrollername/ReturnsOfSinglePO');
});