Asp.net mvc 使用asp.net mvc将当前控制器名称设置为页面加载时可观察到的淘汰
我在一个单独的.JS文件中有以下Asp.net mvc 使用asp.net mvc将当前控制器名称设置为页面加载时可观察到的淘汰,asp.net-mvc,knockout.js,Asp.net Mvc,Knockout.js,我在一个单独的.JS文件中有以下视图模型: var vm = { ControllerName:ko.observable(), getData: function () { $.ajax({ type: 'GET', url: '/'+this.ControllerName+'/GetData', contentType: "application/json; charset=utf-8", dataType: "json", data:js
视图模型
:
var vm = {
ControllerName:ko.observable(),
getData: function () {
$.ajax({
type: 'GET',
url: '/'+this.ControllerName+'/GetData',
contentType: "application/json; charset=utf-8",
dataType: "json",
data:jsonData,
success: function(data){
// code to bind the data
}
});
} }
$(function () {
ko.applyBindings(C1ViewModel);
C1ViewModel.getVisibleAndInvisibleColumns(); });
我必须使用当前asp.net mvc控制器名称设置ControllerName
可观察,并在getData
函数中使用此可观察,以便控制器名称始终是动态的。由于无法在.JS文件中执行服务器端razor代码,因此我必须从标记文件中传递当前控制器名称,在标记文件中,我可以通过编写服务器端razor代码来获取当前控制器名称
我的问题是如何将html中的值传递给视图模型,将其设置为可观察值,并在整个视图模型中将其用作全局值?有没有其他方法可以实现我在上面尝试的目标?您可以在标记中使用脚本标记来声明设置控制器名称的JS变量。然后,您可以访问这是您的.JS文件:
var vm = {
ControllerName:ko.observable(),
getData: function () {
$.ajax({
type: 'GET',
url: '/'+this.ControllerName+'/GetData',
contentType: "application/json; charset=utf-8",
dataType: "json",
data:jsonData,
success: function(data){
// code to bind the data
}
});
} }
$(function () {
ko.applyBindings(C1ViewModel);
C1ViewModel.getVisibleAndInvisibleColumns(); });
CSHTML
<script>
var urlForController = "@Url.RouteUrl("DefaultApi",
new { httproute = "",
controller = "ControllerNameHere",
action = "GetData" })";
</script>
this.ControllerName
必须是this.ControllerName()