【问题标题】:implementing jTable MVC 4实现 jTable MVC 4
【发布时间】:2013-08-23 08:21:59
【问题描述】:

我有关注

******控制器** *********

namespace DLM.Controllers{
public class BooksController : Controller
{

    private IRepositoryContainer _repository;
    //
    // GET: /Books/
    public ActionResult Index()
    {
        return View();
    }


    [HttpPost]
    public JsonResult ListBooks(int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
    {
        try
        {
            //Get data from database
            int bookCount = _repository.BookRepository.GetBooksCount();
            List<Books> book = _repository.BookRepository.GetBooks(jtStartIndex, jtPageSize, jtSorting);

            //Return result to jTable
            return Json(new { Result = "OK", Records = book, TotalRecordCount = bookCount });
        }
        catch (Exception ex)
        {
            return Json(new { Result = "ERROR", Message = ex.Message });
        }
    }

***** ListBooks 视图 ** **********

{
@Styles.Render("~/Scripts/jtable/jtable.2.3.0/themes/metro/darkgray/jtable.min.css") 
<script src="/Scripts/jtable/jtable.2.3.0/jquery.jtable.min.js" type="text/javascript"></script>

<div id="BookTableContainer"></div>


<script type="text/javascript">

    $(document).ready(function () {

        $('#BookTableContainer').jtable({
            title: 'The Student List',
            paging: true, //Enable paging
            pageSize: 10, //Set page size (default: 10)
            sorting: true, //Enable sorting
            defaultSorting: 'Book Title ASC', //Set default sorting
            actions: {
                listAction: '/Books/Index',
                deleteAction: '/Books/DeleteBook',
                updateAction: '/Books/UpdateBook',
                createAction: '/Books/AddBook'
            },
            fields: {
                BooksID: {
                    key: true,
                    create: false,
                    edit: false,
                    list: false
                },
                Code_No: {
                    title: 'Book Code',
                    width: '23%'
                },
                Title: {
                    title: 'Book Title',
                    list: false
                },
                Author: {
                    title: 'Author',

                    list: false
                },
                Page_No: {
                    title: 'Number of Pages',
                    width: '13%'

                },
                Y_of_P: {
                    title: 'Year of Publication',
                    width: '12%'

                },
                Language: {
                    title: 'Language',
                    width: '15%'

                },
                Subject: {
                    title: 'Subject',
                    list: false

                },

                Publisher: {
                    title: 'Publisher',

                    list: false
                },
                Keyword: {
                    title: 'Keywords',
                    type: 'textarea',
                    width: '12%',
                    sorting: false
                }

            }

        });

        //Load student list from server
        $('#BookTableContainer').jtable('load');
    });

</script>

}

问题 *****************

当我尝试访问/Books/ListBooks 有错误The resource cannot be found.

请帮帮我,我是 jTable 的新手,它的实现。

【问题讨论】:

  • 您是否定义了任何自定义路由或只有默认路由?
  • 仅使用默认路由。
  • 您是否尝试更改索引[HttpPost] 似乎jtable 使用POST 来获取数据。
  • Post 和 Get 是否有任何问题,因为如果我将 [HttpPost] 放在 Index 操作上,那么它也有同样的错误。
  • link 用于 jtable 的演示。似乎它发出了一个 POST 请求。您是否可以调用其他操作方法,即 DeleteBook、UpdateBook?

标签: asp.net-mvc-4 jquery-jtable


【解决方案1】:

在 jtable listAction 中使用 ListBooks 动作而不是 Index 动作。索引操作将用于呈现视图,并且在 jquery 之后将从 ListBooks 加载数据

【讨论】:

    【解决方案2】:

    我认为您正在通过浏览器 URL 请求 /Books/Listbooks。浏览器默认使用 get 方法从服务器获取数据,并且您将 HttpPost DataAnnotation 置于该方法之上,这就是您收到错误的原因,因此如果您想要输出,请进行以下两项更改。

    1)移除ListBooks方法的HttpPost数据注解。

    2)在返回Json方法中添加JsonRequestBehavior.AllowGet如下

    return Json(new { Result = "OK", Records = book, TotalRecordCount = bookCount }, JsonRequestBehavior.AllowGet)

    现在您的方法将完美运行。

    【讨论】:

    • 我之前尝试过,但它不起作用。这里的数据是从数据库中检索出来的,但jTable中没有显示。它直接在页面上。
    • Jtable 中的 listAction 应为 listaction:'/Books/ListBooks'
    猜你喜欢
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2012-11-16
    • 1970-01-01
    相关资源
    最近更新 更多