1

我使用 ADO.Net 作为数据源开发了 MVC 4 单页应用程序。尝试按 ID 过滤视图,尝试了会话变量,但没有任何运气。这是查看代码:

<script type="text/javascript" src="@Url.Content("~/Scripts/BloodPressuresViewModel.js")"></script>
<script type="text/javascript">
    $(function () {
        upshot.metadata(@(Html.Metadata<KOTest2.Controllers.DALController>()));

        var viewModel = new MyApp.BloodPressuresViewModel({
            serviceUrl: "@Url.Content("~/api/DAL")"
        });
        ko.applyBindings(viewModel);
    });
</script>

hee 是 Javascript 文件中的 calss 代码:

.....
  var entityType = "BloodPressure:#KOTest2.Models";
    MyApp.BloodPressure = function (data) {
        var self = this;

        // Underlying data
        self.ID = ko.observable(data.ID);
        self.PHN = ko.observable(data.PHN);
        self.Day = ko.observable(data.Day);
        self.Systolic = ko.observable(data.Systolic);
        self.Diastolic = ko.observable(data.Diastolic);
        self.HeartRate = ko.observable(data.HeartRate);
        upshot.addEntityProperties(self, entityType);
    }
.....

我认为最好的解决方案是使用 ViewBag 将 ID 从控制器传递给视图。知道我该怎么做!!

由于我不是经验丰富的程序员,是否可以过滤(foreach)

 <tbody data-bind="foreach: bloodPressures">

提前致谢。

4

1 回答 1

0

我不确定我是否了解您如何访问数据库(在服务器上,对吗?)进行过滤,但您可以执行以下操作:

<table data-bind="foreach: rows">
    <tr>
        <td>id: <span data-bind="text: ID"></span></td>
        <td>PHN: <span data-bind="text: PHN"></span></td>
        ....
    </tr>
</table>

在你的 javascript 中

function viewModel() {
    var self = this;
    this.loggedIn = ko.observable(false);
    this.rows = ko.observableArray([]);

    // return an array of objects to display to the user
    function getDataFromServer() {

         return ...;
    }

    ko.computed(function() {
        if (this.loggedIn())
            this.rows(getDataFromServer());
    },this);

    ...
}

但是,您进行身份验证,成功后执行this.loggedIn(true),这将导致计算函数触发从服务器的拉取和 ; 的设置this.rows()。这反过来将更新显示。

于 2012-05-20T00:16:04.053 回答