在MVC中使用datatables / webmethods

时间:2012-02-02 15:21:14

标签: jquery asp.net-mvc

我最近在webforms应用程序中实现jQuery和JSON时遇到了一些viewstatemac错误。我没有使用服务器场等等 - 所以我假设viewstate以某种方式导致问题 - 所以不是诊断问题(我试图做几个星期),我想转向MVC完全删除viewstate - 这应该意味着没有更多的viewstate错误(希望如此)。

到目前为止一直很好 - 我在视图中使用MVC中的模型进行屏幕渲染。现在我不确定的是,在我的jQuery中,我有以下代码:

 //function to show grid
function getGrid() {
    $.ajax({
        type: "POST",
        url: "courses.aspx/getGrid",
        data: "{tbDatet:'" + $("#tbDate").val() + "',ddlDayst:'" + getDays() + "',ddlTypet:'" + $("#ddlType").val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg2) {
            $("#jGrid").html(msg2.d);
            hideWait();
            addJQGrid();
            },
        error: function (jqXHR, textStatus, errorThrown) {
            hideWait();
            sendErr(errorThrown);
        }
    });
};

我的jSon前往:

url:“courses.aspx / getGrid”

...如何在MVC中替换它?

目前进入:

<WebMethod()> _
Public Shared Function getGrid(ByVal tbDatet As String, ByVal ddlDayst As Integer, ByVal ddlTypet As Integer) As String
    Dim c As New course
    Dim id As Integer = HttpContext.Current.Request.QueryString("id")
    Return c.getCourseArray(tbDatet, ddlDayst, ddlTypet)
End Function

getCourseArray函数只是查询数据库(使用dataadapters和datatables,以及会话对象)。我有两个问题:

1)我可以保持getGrid函数和代码完全如上所述,但是它是否在MVC文件中?

2)一旦我将它放在MVC类型文件中,我是否仍然可以使用传统的数据适配器和数据表以及会话值(根据webforms VS)查询我的后端数据库?

感谢您提出任何指示/指导,

标记

2 个答案:

答案 0 :(得分:0)

首先,如果你要做asp.net MVC,你不需要WebMethod,也没有Viewstate。

您遇到的第一个问题是在MVC中,您不需要将.aspx添加到URL中的文件中,路由处理,这是一篇博客文章,向您展示如何使其工作{{ 3}}

也可以进行局部视图,看一下这篇文章http://bob-the-janitor.blogspot.com/2010/12/easy-ajax-with-aspnet-mvc-and-jquery.html

答案 1 :(得分:0)

在IIS 7中。*

  <system.webServer>
  ...
  <tracing>
  <traceFailedRequests>
    <add path="*">
      <traceAreas>
        <add provider="ASP" verbosity="Verbose" />
        <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
        <add provider="ISAPI Extension" verbosity="Verbose" />
        <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
      </traceAreas>
      <failureDefinitions statusCodes="401.3-999,405" verbosity="Error" />
    </add>
  </traceFailedRequests>
</tracing>
...
</system.webServer>