0

我有下一个场景:

我正在使用淘汰赛(2.1.0 版)和 ASP MVC.NET,所以在一个特定的点上,我的控制器调用了一个新视图。此视图在下一次调用时呈现局部视图:

<div id="productSeriesNonSocks">
    @{
    Html.RenderPartial("~/Views/SalesOrderManagement/GetAvailableProductSeriesNonSocks.cshtml", Model);
     }
</div>

控制器使用带有一些属性的 viewModel (Model) 调用视图,因此上述调用将整个模型发送到局部视图。

在局部视图中,我可以使用如下简单语句访问模型属性:

Available season type: @Model.SeasonType

问题从这里开始......局部视图有它自己的淘汰模型:

<script type="text/javascript">
$(function () {
    //activates KO
    ko.applyBindings(productSeriesNonSocksModel);
    GetDataFromModels();
});

var productSeriesNonSocksModel = {
    AvailableProductSeriesNonSocks: ko.observableArray([]),
    selectedProdSeries: ko.observable(),
    seasonType: ko.observable()
};

function GetDataFromModels() {
    $.get('/SalesOrderManagement/GetAvailableProductSeriesNonSocks', { seasonType: this.seasonType() }, function (data) {
        productSeriesNonSocksModel.AvailableProductSeriesNonSocks(data.AvailableProductSeriesNonSocks);
    });
}

</script>

GetDataFromModels() 函数应调用控制器中的方法,以 seasonType 作为参数,以便检索正确的数组并将其放在 AvailableProductSeriesNonSocks 数组中。这里的问题是我不知道如何将值从属性模型(在本例中为 @Model.SeasonType)传递给淘汰模型以调用控制器中的函数(productSeriesNonSocksModel.seasonType)。

我试图通过以下方式传递值:

seasonType: ko.observable(@Model.SeasonType)

或者

seasonType: @Model.SeasonType

但它不起作用。任何想法将模型属性值传递给敲除属性值以便使用 $.get(...) 进行调用?

澄清一下,我不能只问值,因为该值(SeasonType)是用户在前一个视图中选择的。

先感谢您。

4

1 回答 1

1

您可以在脚本标签中使用剃刀。

<script type="text/javascript">
    var seasonType = @Model.SeasonType;
    // do something with season type
</script>

避免额外的请求也可能是有意义的。您可以将“/SalesOrderManagement/GetAvailableProductSeriesNonSocks”中的数据放入模型或 ViewBag 中,并将其呈现为 JavaScript 对象。

于 2012-06-05T20:52:44.553 回答