2015-05-24 44 views
2

在我的MVC _layout页面上,我有一个按钮,该按钮将一个带有iframe的面板放入其中。它使用带有剃刀的C#通过控制器和动作名称进行ajax调用

我想用另一个html页面的内容填充iframe,以便像ControllerNameActionName Help.html这样的格式显示当前屏幕的帮助。

如何获取Ajax调用的当前控制器名称和操作名称?

(或者是错误的方式做到这一点?)

+0

? – AmmarCSE

+0

对不起,我正在使用C#和剃刀 –

+0

让我知道这是你想要的还是你需要更多的帮助 – AmmarCSE

回答

0

在您看来,尝试把

<input id="IFramePath" type="hidden" value="@Url.Action("ActionMethodName", "ControllerName")"/> 

,并在您的jQuery没有必要为Ajax。只要做到

$('#myIframe').attr('src', $('#IFramePath').val()); 

替代做法

Innclude在iframe本身的路径

<iframe id="myIframe" style="display:none" src="@Url.Action("ActionMethodName", "ControllerName")"></iframe> 

,并显示该按钮被点击

$('#myButton').click(function(){ 
    $('#myIframe').show(); 
}); 
+0

按钮和框架在布局页面上,所以整个网站只有1个按钮和1个框架。按下按钮应显示基于当前控制器/操作的帮助。您的解决方案需要在每个视图中包含一个按钮? –

1

你可以得到电流时在c#b页面请求网址Ÿ使用各种方法。

HttpContext.Current.Request.Url.AbsolutePath 

表格的网址:http://host/controllername/methodname。那么你可以用c#来爆炸这个。获取控制器和方法名称段。现在使用这个,你可以发送ajax调用所需的控制器方法。

$("button").click(function(){ 
    $.ajax({ 
     url: "../ControllerName/ActionName", 
     success: function(result){ 
       $("#div1").html(result); 
      } 
     error: function(e){ 
      alert(e); 
      } 
    }); 
}); 
0

从前面给出的评论和回答中,我意识到当我问这个问题时,我并不完全明白我需要做什么。对不起。我现在明白了Ajax不是必需的,我可以从Window.Location.href

的JavaScript/jQuery的我都似乎工作得到控制器和动作的值是您使用剃刀如下所示

$('#helpButton').click(function() { 
     $("#helpPanel").load(getHelpPageName()); 
     $("#helpPanel").animate({ height: 'toggle' }, 500); 
    }); 

function getHelpPageName() { 
    var page = "Home"; 

    var params = window.location.href.toString().split(window.location.host)[1]; 

    //remove the '/' that will be the 1st character 
    params = params.substring(1); 

    if (params.length == 0) { 
     return page + ".html"; // no params - it's home page 
    } 

    var paramList = params.split('/'); 

    if (paramList.length === 1) //controller, no action 
     page = paramList[0]; 
    else if (paramList.length >= 2) //controller and action - ignore rest 
     page = paramList[0] + paramList[1]; 

    return page + ".html"; // home page - no controller, no action 
} 
相关问题