从asp.net mvc action调用jquery函数

时间:2010-07-03 05:13:19

标签: jquery asp.net-mvc

将表单发布到数据库后,可以从asp.net mvc中调用jquery .....

 [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 个答案:

答案 0 :(得分:1)

没有。您无法从操作中调用jQuery函数。在MVC中执行此操作的方法是简单地在View的.aspx页面中添加该函数,并将其包装在$(document).ready(function(){})中(或者该函数适用于您的库),以便在页面中完全加载后,将调用该函数。

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

因此,假设Insert to db会返回某些内容,例如ID,您可以将此ID值放在ViewDataTempData中,因为您'使用RedirectToAction然后用它来调用函数。

    [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"] %>将替换为操作中生成的实际值。