【发布时间】:2014-09-15 14:50:13
【问题描述】:
我有一个使用 Knockout JS 的 MVC 站点。基本上,MVC 处理到几个不同页面的路由,每个页面都有一个视图模型。
其中一个页面需要一个参数来过滤数据。该页面的 MVC 控制器代码如下:
public ActionResult Transactions(int policyId)
{
ViewData["policyId"] = policyId;
return View();
}
该页面的视图包含一个隐藏字段。
<input type="hidden" name="hldPolicy" value="@ViewData["policyId"]">
然后在页面的html之后,
@section scripts
{
@Scripts.Render("~/bundles/myBundle")
<script>
$(document).ready(function () {
var policyId = $('#hldPolicy').val();
var transactionViewModel = new TransactionViewModel(policyId);
ko.applyBindings(transactionViewModel);
});
</script>
}
问题是这不起作用,因为脚本运行时隐藏字段未定义。这对我来说没有意义,因为我认为这就是 $(document).ready 所要防止的。我在这里做错了什么?有没有更好的方法将参数从 URL 参数传递到视图模型?
【问题讨论】:
-
尝试在页面底部使用 document.ready
-
TransactionViewModel的定义在哪里
标签: javascript asp.net-mvc knockout.js