Доступ к объекту модели в jQuery - PullRequest
1 голос
/ 30 ноября 2009

У меня есть модель, Customers, в которой у меня есть свойство списка, PayHistory. Мне нужно связать таблицу с объектом PayHistory, используя jQuery в моем приложении ASP.NET MVC (C #).

Я связываю таблицу с помощью jQuery как:

<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td>
            <div id="PaidDate">
            </div>
        </td>
        <td>
            <div id="PaidAmt">
            </div>
        </td>
    </tr>
</table>

<script type="text/javascript" language="javascript">
    $(document).ready(function() {
      //Initialize the dynamic Value;
      _dynId = 1;
      var data= '<%= Model.PayHistory %>';
       if (data != null) {
            for (i in data) {
                var pay= data[i];
                $('#PaidDate').append('<div id="PaidDate' + _dynId  + '" style="height:20px;padding-left:10px;">' + '<label>' + pay.paidDate+ '</label>');
                $('#PaidAmt').append('<div id="PaidAmt' + _dynId  + '" style="height:20px;padding-left:10px;">' + '<label>' + pay.PaidAmount + '</label>');
                _dynId   += 1;
            }
        }
    });
</script>

В приведенном выше HTML я пытаюсь получить доступ к объекту списка PayHistory в jQuery, но он дает тип объекта.

Как получить доступ к объекту в jQuery для привязки таблицы, как в приведенном выше HTML-коде?

Ответы [ 3 ]

5 голосов
/ 30 ноября 2009

Вам нужно проделать немного больше работы, чтобы привести данные в форму, понятную JavaScript. Самый простой способ - закодировать данные в объекте в виде строки JSON , а затем вместо этого передать ее в переменную data.

Вы можете сделать это вручную (создав метод класса, который это делает) или, поскольку вы используете ASP.NET MVC, вы можете использовать метод Json . Тем не менее, это должно быть сделано в контроллере, а не в представлении. Итак, я бы добавил его в ваш объект Model или в общий View Data. Вероятно, оно может существовать как свойство объекта Model, которое просто вызывает метод Json для исходного значения и возвращает его.

C #

public string JsonPayHistory
{
    get 
    {
        return Json(PayHistory);
    }
}

JS

var data = '<%= Model.JsonPayHistory %>';

Вы захотите взглянуть на строку, которая возвращается. Он будет в формате JSON и должен быть оценен. Вы можете сделать это, добавив:

data = eval(data); // usually a bad idea

или

data = JSON.parse(data); // may require a library if browser doesn't support it

Теперь у вас должен быть объект, похожий на ваш объект C #. Вы можете зациклить его и ссылаться на свойства по имени. Если вы предоставите базовую структуру вашего объекта PayHistory, я могу привести лучшие примеры.

2 голосов
/ 01 декабря 2009
var data= <%= new JavaScriptSerializer().Serialize(Model.PayHistory) %>;
0 голосов
/ 30 ноября 2009

Используйте Json.NET для различных преобразований между объектами .NET и классами и JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...