2013-09-24 29 views
-1

я следующая модель в моей backbone.js-Может кто-нибудь мне помочь?

var Book = Backbone.Model.extend({ 

    defaults: { 
     id: 0, 
     title: 'Book', 
     price: 100, 
     quantity: 0 
    } 

}); 

с коллекцией, как,

var BookList = Backbone.Collection.extend({ 

    model: Book, 

    url: function() { 
     return 'Handler.ashx'    
    } 

}); 

Используя collection.fetch() метод в этой магистрали, я могу получить список книг из базы данных, используя следующий handler.ashx

<%@ WebHandler Language="VB" Class="Handler" %> 

Imports System 
Imports System.Web 
Imports System.Web.Script.Serialization 
Imports System.Data.OleDb 
Imports System.Data 
Imports MySql.Data.MySqlClient 


Public Class Handler : Implements IHttpHandler 

    Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest 
      Dim detail As List(Of MyBookList) = GetBookDetail() 

      If detail.Count > 0 Then 
       context.Response.ContentType = "application/json" 
       Dim json As String = New JavaScriptSerializer().Serialize(detail) 
       context.Response.Write(json) 
      Else 
       context.Response.StatusCode = 404 
      End If 
    End Sub 

    Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable 
     Get 
      Return False 
     End Get 
    End Property 

    Protected Function GetBookDetail() As List(Of MyBookList) 

     Dim ConnectionString As String = ConfigurationManager.ConnectionStrings("con").ConnectionString 
     Dim sqlConn As New MySqlConnection(ConnectionString) 
     Dim sqlCommand As New MySqlCommand 
     sqlCommand.Connection = sqlConn 
     Dim dReader As MySqlDataReader 
     Dim dtExcelRecords As New DataTable() 
     Dim ds As New DataSet() 
     sqlConn.Open() 

     sqlCommand.CommandText = "SELECT * FROM booklist " 
     sqlCommand.CommandType = CommandType.Text 
     dReader = sqlCommand.ExecuteReader() 

     Dim book As New List(Of MyBookList) 

     If dReader.HasRows Then 
      While dReader.Read() 
       Dim bookObject As New MyBookList 
       bookObject.title = dReader(0) 
       bookObject.price = dReader(1) 
       bookObject.id = dReader(2) 
       bookObject.quantity = dReader(3) 
       book.Add(bookObject) 
      End While 
     End If 

     Return book 
    End Function 
End Class 

Я хочу знать, какой код должен быть добавлен в Backbone.js и обработчик для обновления конкретной модели в Booklist collection.I имеют Фолля за счет экономии метода trigered когда кнопка сохранения нажата ..

updateBookTitle: function() { 
     var a = $('.title').val(); 
     this.model.set({ title: a }); 
     this.model.save();   
    }, 

как обработчик URL должен быть изменен, чтобы опубликовать модель Id при сохранении?

+1

Вы не можете сохранить модель через коллекцию, а через саму модель. Вы пытались добавить urlRoot к своей модели? См. Также http://backbonejs.org/#Model-save –

+0

Нужно ли использовать функцию для возврата URL-адреса коллекции? Он просто возвращает строку? Модель по умолчанию использует URL-адрес коллекции плюс идентификатор модели. –

+0

Я видел метод сохранения, после вызова запроса на сохранение будет отправлен сервер с идентификатором модели, добавленным в url и его атрибутами, я хочу знать, как получить эти атрибуты в моем обработчике для обновления базы данных. –

ответ

0

Магистраль предназначена для работы с службами RESTful, которых нет в WebForms. С .NET вы должны действительно рассмотреть использование WebAPI или MVC-фреймворков. Если у вас должно быть, используйте веб-форму, вам нужно либо изменить способ работы Backbone sync, либо вам придется вручную закодировать в своем .aspx действие на основе HTTP-метода запроса: GET = Список, POST = Сохранить , PUT = Обновить, DELETE = Удалить.

+0

Спасибо за ваш отзыв Chris.I хочу использовать веб-форму, я также подумал о модификации метода SYNC с базовыми магистралями, но я не понимаю, что должно быть изменено в этом. –

Смежные вопросы