2011-06-08 37 views
0

我有一个myPage.cshtml页面。我在myHelper.cshtml中写了一个@helper方法(myMethod())。我可以在页面中调用helper方法(@ myHelper.myMethod();),它工作得很好。从客户端事件调用ms网页中的自定义@helper方法

我如何调用从用户发起的事件一样(menu.item.click,button.click,链接点击)同样的方法?

回答

0

因为你的方法在服务器端代码执行,你必须创建一个方法来调用从客户端服务器上的代码。例如,你可以有一个操作方法是这样的:

[HttpPost] 
public ActionResult MyHelperCaller() 
{ 
    // Returns the contents of the 'myHelperCaller' view: 
    return this.View(); 
} 

...其中myHelperCaller视图包含您的myMethod()助手方法的调用。

然后调用来自客户端你会使用类似:

<div id="myHelperTarget"></div> 
<input id="myHelperTrigger" type="button" value="Call MyHelper" /> 
<script language="text/javascript"> 

$("#myHelperTrigger").click(function() { 
    // Loads the myHelperCaller view into the myHelperTarget div: 
    $("#myHelperTarget").load("/MyController/MyHelperCaller"); 
}); 

</script> 
+0

非常感谢您的输入史蒂夫!我正在尝试使用“网页”编程模型来实现这一功能,所以我真的没有模型,视图和控制器本身,只使用页面,是否有任何方法可以在该模型中执行此操作? – 2011-06-08 18:49:00

+0

啊,好的!公平 - 我认为相同的答案适用 - 你可以有一个网页,除了调用你的帮助器方法,然后让你的JQuery函数调用,就像'.load(“/ myHelperCaller.cshtml”)'。 – 2011-06-08 18:54:47

+0

所以是这样的作品,1] myHelperTrigger按钮调用它在新窗口中打开的3] myHelperCaller.cshtml第2页]我的客户端JavaScript(页面只包含调用myHelper.myMethod(),这完全执行),在现在的问题是,我有要解决隐藏的新窗口,并假设myMethod的有任何PARAMATERS我将不得不通过沿链的和(也做,能)但 我只是觉得我打大锤图钉或失踪显而易见,让这个做得更简洁一点... 再次感谢史蒂夫你的想法,我真的很感激它! – 2011-06-08 21:03:10