我有下一个场景:
我正在使用knockout(版本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)传递给knockout模型以调用控制器中的函数(productSeriesNonSocksModel.seasonType)。
我试图通过以下方式传递值:
seasonType: ko.observable(@Model.SeasonType)
或
seasonType: @Model.SeasonType
但它不起作用。有没有想过将模型属性值传递给knockout属性值以便使用$ .get(...)进行调用?
为了澄清,我不能只询问该值,因为该值(SeasonType)是由用户在上一个视图中选择的。
提前谢谢。
答案 0 :(得分:1)
您可以在脚本标记中使用razor。
<script type="text/javascript">
var seasonType = @Model.SeasonType;
// do something with season type
</script>
避免额外请求也可能有意义。您可以将“/ SalesOrderManagement / GetAvailableProductSeriesNonSocks”中的数据放入模型或ViewBag中,并将其呈现为JavaScript对象。