2012-02-08 73 views
0

我定义我的控制器上,它接受一个整数并返回一个字符串值的动作:如何从视图调用操作并返回其结果?

public string SqlQuery(int listItemId) 
     { 
      return _sqlListSharePointList.GetSqlQueryFromCache(listItemId); 
     } 

我怎么能叫从我看来这个动作?除了AJAX之外,还有哪些其他选择?

我试过以下,但没有奏效:

$.get('/SqlReportList/SqlQuery', 1, function (data) { 
       alert(data); 
      }); 

的“SqlReportList”是我的控制器的名称。

我也尝试下面的代码:

$获得( '/ SqlReportList/SqlQuery类/ 1',功能(数据){ 警报(数据); });

但它在生产上抛出了一个异常,即listItemId为空。

我应该装饰我的动作不同吗?

我也试图通过完全合格的名称,但同样的错误访问它:

http://localhost:4574/SqlReportList/SqlQuery/1

感谢,

回答

1

如果你不希望使用AJAX(建议),那么唯一的方法调用该方法是通过页面刷新,只有这样才能从视图再次打开服务器端(控制器)。

0
$.get('/SqlReportList/SqlQuery', { "listItemId": listItemId }, function (data) { 
     $('#tbSqlQuery').text(data); } 
     ); 
0

是否在渲染周围页面时已知该参数?

如果是这样(我已经正确理解你的问题),那么你可以使用Html.RenderAction。请参阅http://haacked.com/archive/2009/11/17/aspnetmvc2-render-action.aspx

如果不是,那么您只能真正使用AJAX或整页重新加载。为了让AJAX获得正确的URL,您应该可以使用Url.Action和一些占位符值。

T4MVC项目为各种事情提供强类型支持,包括动作URL,甚至支持Javascript代码的显式占位符。参见http://t4mvc.codeplex.com/documentation的第2.2.2节