【问题标题】:How to Call an Action from a View and return its result?如何从视图中调用操作并返回其结果?
【发布时间】:2012-02-29 19:14:49
【问题描述】:

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

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

我怎么能从我的角度来调用这个动作?除了 AJAX,我还有哪些其他选择?

我尝试了以下方法,但没有成功:

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

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

我也试过下面的代码:

$.get('/SqlReportList/SqlQuery/1', 函数(数据){ 警报(数据); });

但它在生产中抛出了 listItemId 为空的异常。

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

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

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

谢谢,

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:
          $.get('/SqlReportList/SqlQuery', { "listItemId": listItemId }, function (data) {
               $('#tbSqlQuery').text(data); }
               ); 
      

      【讨论】:

        【解决方案3】:

        渲染周边页面时参数是否已知?

        如果是这样(并且我正确理解了您的问题),那么您可以使用 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节

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-04
          • 1970-01-01
          • 2011-03-21
          • 2012-05-16
          • 1970-01-01
          • 2021-10-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多