如何从视图中调用操作并返回其结果?

时间:2012-02-08 10:51:29

标签: ajax model-view-controller view controller action

我在我的控制器上定义了一个动作,它接受一个整数并返回一个字符串值:

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

我如何从我的视角中调用此操作?除了AJAX,我还有其他选择吗?

我尝试了以下但没有奏效:

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

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

我也尝试了以下代码:

$。get('/ SqlReportList / SqlQuery / 1',function(data){                 警报(数据);             });

但它在listItemId为null的生产中引发了异常。

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

我也尝试通过完全限定名称访问它,但同样的错误:

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

谢谢,

3 个答案:

答案 0 :(得分:1)

如果您不想使用ajax(建议使用),那么只有通过页面刷新才能调用方法,只有这样才能从视图中再次访问服务器端(控制器)。

答案 1 :(得分:0)

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

答案 2 :(得分: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节