从javascript调用方法控制器

时间:2012-10-14 11:37:37

标签: javascript asp.net-mvc-3 razor

我正在使用MVC 3剃须刀开发一个网站。在哪里    我有以下情况:

  1. 控制器方法:

    public ActionResult MyControllerMethod(int parameter){

        ''go to bd a do some staff
    
        IList<My_Custom> datafromDB = MyService.GetData(parameter);           
    
        'returns to my string tuped view
        return View(datafromDB );
    

    }

  2. 我使用javascript的强类型视图:

    @model IList

    <script type="text/javascript">
    
     function getData()
     { 
       var parameter = document.getElementById('myParamater').value;  
    
       $.get('/MyController/MyControllerMethod/' + parameter, function (data) {
    
          loadData();
    
       }
       );
    

    }

    function loadData() 
    { 
      clearData();
    
      datos = @Html.Raw(Json.Encode(Model));  
    
      //do some stuff with datos
    
    }
    
    </script>
    

    对控制器的javascript调用工作正常,但我的问题是字符串类型视图看起来没有为@model获取新值,所以继续加载相同的信息。

  3. 虽然我已经调试了accion控制器并且每次都返回不同的数据。 那么有什么方法可以刷新字符串类型视图的Model值。

    我还试图获取该行的数据值

    $。get('/ MyController / MyControllerMethod /'+ parameter,function(data){

    但我没有成功做到这一点。

    我将不胜感激任何帮助或暗示。

    感谢您阅读我的帖子

1 个答案:

答案 0 :(得分:0)

您的行动返回视图,这就是无效的原因。您的代码如何工作:

  • 加载数据,然后使用页面上的json生成视图
  • 向服务器发送请求并通过html接收json(所有这些数据都在内存中), 然后从第一步开始访问json

它必须如何运作:

  • 创建视图
  • 向服务器发送请求(另一种方法,返回Json
  • 访问data
    public ActionResult YourJsonAction(int parameter)
    {
        IList datafromDB = MyService.GetData(parameter);
        return Json(datafromDB, JsonRequestBehavior.AllowGet);
    }

    function getData() 
    {  
       var parameter = $('#myParamater').val();   
       $.get('/MyController/YourJsonAction/' + parameter, function (data) { 
          //data from YourJsonAction
       }); 
    }