2011-07-08 73 views
0

我有一个非常类似于这个问题how to call javascript function from Controllers file in MVC?但提供的答案不是我所需要的。从ASP.NET MVC控制器触发/调用JavaScript/jQuery事件

我想要做的是这个,我想返回一个视图,但是我想要触发/调用一个javascript/jquery事件。比如在我的控制器:

public ActionResult List() 
    { 
     // do some processing 
     // Call the javascript/jquery event    

     return this.View(); 
    } 

现在,我想这个问题的方法是使用的观点一样,包包:

public ActionResult List() 
    { 

     ViewBag.MovePanel = "yes"; 
     return this.View(); 
    } 

然后在我看来,我有soemething像:

<input type="hidden" name="move" id="move" value="<%: (string)ViewBag.MovePanel %>" /> 
<script type="text/javascript"> 
$('#move').change(function() { 
    console.log('changed'); 
}); 

该值被设置为“yes”,但“change”事件永远不会被触发。

我该如何实现我想要做的?

编辑: 按照达林的评论,这是我正在努力实现的。 我们正在尝试创建一个类似于图像轮播的形式轮播。所以,我想要做的是控制是否显示下一个表单。

例如,一个典型的工作流程是这样的:

  1. 说我是第一种形式是项目的名单上。我选择和项目,然后点击编辑。
  2. 然后发生的事情是列表窗体从视图中隐藏(但未关闭),编辑窗体向用户显示。
  3. 用户然后对窗体进行一些更改并尝试保存。
  4. 如果没有验证错误,则编辑表单将关闭,并且之前的列表表单将显示在视图中。

因此,我遇到了最后一步的问题,即让列表窗体进入视图。

在更广阔的背景下说,当我提交表单并且出现错误时,我应该能够保持“编辑”表单在视图中,而不是关闭它并且不显示先前打开的“列表”表单。

我希望这是一个更清晰的解释。

+0

如果你需要这样的东西,你的设计有一些根本性的错误。所以为了帮助你解释你的场景是什么以及你想要达到什么目的(并且不要说我试图从控制器动作中调用一个javascript事件,因为这没有任何意义)。描述你的最终目标。 –

+0

@Darin:公平点 – DavidS

回答

0

好吧,

达林是对的,设计是关闭的。所以我最终需要做的就是“调整”我的所有表单,而不是依靠HTML表单提交。我不愿意这样做,仅仅是因为它意味着更多的工作,但是做完之后,并没有像我想象的那么长。

但是,以下真的帮了我很多How to read modelstate errors when returned by Json?

0

你应该注意的一件事是, 你不能从你的服务器端调用javascript(客户端代码)方法。 (除了推动)。

并且在您的代码上,$(“#move”)的值永远不会更改。这是值得的,因为“是”。 如果您更改$(“#move”)的值而不是“yes”,它会触发。