使用Jquery在MVC3中调用不同的操作

时间:2013-09-11 07:49:32

标签: jquery html asp.net-mvc-3 razor

我的应用程序位于用 C#.Net 编码的 Asp.net MVC3 中,我的要求是,有一个保存到草稿按钮,用于将数据保存到某个表格中我的数据库。我在视图上有一个打印按钮。我正在使用SSRS打印我的数据。当用户填写表单并单击“保存到草稿”时,将保存该数据,然后用户可以单击“打印”按钮以获取已保存数据的SSRS报告。我的问题是当用户点击打印按钮然后应该打开一个新选项卡,应该看到报告。

以下是查看代码

    $("#Print_button").live("click", function () {
       $('#My_Form').attr('action', 'My Controller action which passes parameter to 
       SSRS report');
    });

打印按钮的HTML

 <input type="submit" id="Print_button"  value="Print"  />

控制器代码

     [HttpPost]
     public ActionResult Method_That_Pass_ParameterTo_SSRS(MyClass Class_Object)
     {
          My Logic to pass the parameters to SSRS report
          return View(Class_Object);
     }

我尝试解决问题

1。我试图在按钮HTML中添加Target =“_ blank”

Jquery Print_Button点击事件中的

2。 window.open('MyAction','_ blank')

2 个答案:

答案 0 :(得分:1)

试试这个。 正在使用尝试将数据作为报告打印在新窗口/选项卡中。

将您的按钮类型更改为按钮,然后像这样定义点击。

<input type="button" id="Print_button"  value="Print" onclick="ShowReport()"/>

然后在你的行动方法方法。

 public ActionResult Method_That_Pass_ParameterTo_SSRS(MyClass Class_Object)
 {
      My Logic to pass the parameters to SSRS report
      return View(Class_Object);
 }

然后来到你的剧本

<script type="text/javascript">
    function ShowReport(e) {
        // you can use dataitem here if needed to pass any variable
        //var dataItem = this.dataItem($(e.currentTarget).closest("tr"));            
        //BaseUrl will the url of your website
        // for example if url is http://localhost:10259/Home/Index
        //then BaseUrl is "http://localhost:10259/"
        var FullUrl = "Baseurl"+ "ControllerName/ActionName/" + param1(ifany);
        window.open(
                 'FullUrl',
                 '_blank' // <- This is what makes it open in a new window.
                 );
    }        
</script>

只需确保您的控制器正确地将数据传递到所需的视图。

答案 1 :(得分:0)

我会稍微改变一下逻辑。如果已经通过单击其他按钮保存了数据,则可能无法使用表单传递参数。

相反,您可能拥有Html.ActionLink并在点击后替换参数。使用这种方法,您可以在新选项卡中打开结果。看:

@Html.ActionLink("Print", "Action", "Controller", new{param = xxx}, new {@target="_blank", @class="print"})

    <script>
    $(function () {
    $('.print').click(function () {          
                var param = $(".somediv").val() //*Get your param value
                this.href = this.href.replace("xxx", param);
            });
    });
    </script>