2010-07-03 44 views
2

一个jQuery函数提交表单到数据库后,能够进行从asp.net的MVC一个jQuery .....调用从asp.net的MVC行动

[AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Create(FormCollection collection) 
     { 
      try 
      { 
       //Insert to db 
       //Call a jquery function 
       return RedirectToAction("Index"); 
      } 
      catch 
      { 
       return View(); 
      } 
     } 

我应该使用ScriptManager.RegisterClientScriptBlock插入后或任何其他方式来做到这一点...任何建议...

回答

1

不。你不能从一个动作调用jQuery函数。在MVC中执行此操作的方法是只需在View的.aspx页面中添加该函数,然后将其包装在$(document).ready(function(){})(或者该函数用于您的库),以便在页面完全加载时调用该函数。

重要的是要注意,使用MVC,您可以完全控制HTML(包括JavaScript)输出,您应该利用它。尽管在WebForms中最好避免使用MVC中的内联标签<% %>,但您需要使用它们来生成所需的HTML。

所以,假设Insert to db将返回的东西,像一个ID,你可以因为你使用RedirectToAction放置在ViewDataTempData这个ID值,然后用它来调用该函数。

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Create(FormCollection collection) 
    { 
     int newID = InsertToDBAndReturnID(); 
     ViewData["MyID"] = newID; 
     return View(); 
    } 

而在.aspx页面用于Create行动的地方:

<script type="text/javascript"> 
     $(document).ready(function() { 

      // I have direct access to the "MyID" value from the action 
      // so I can utilize it to write any JavaScript with it 
      $('#'+<%: ViewData["MyID"] %>).click(function(){ 
       alert('You clicked the control with the new ID'); 
      }); 

     }); 
    </script> 

当页面呈现,<%: ViewData["MyID"] %>被替换的行动所产生的实际值。