Javascript 使用knockout.js的ASP.NET MVC4 ViewModel变更跟踪
我有一个页面,我想知道何时对任何字段进行了任何更改,然后我将禁用并启用保存按钮 我正在使用下面的代码,但它不起作用。有人知道我缺少什么吗Javascript 使用knockout.js的ASP.NET MVC4 ViewModel变更跟踪,javascript,asp.net-mvc,knockout.js,change-tracking,Javascript,Asp.net Mvc,Knockout.js,Change Tracking,我有一个页面,我想知道何时对任何字段进行了任何更改,然后我将禁用并启用保存按钮 我正在使用下面的代码,但它不起作用。有人知道我缺少什么吗 @using CirrusAdmin.Models @model MedicineModel @{ ViewBag.Title = "Update Medicine"; } <script src="@Url.Content("~/Scripts/knockout-2.1.0.js")" type="text/javascript">&l
@using CirrusAdmin.Models
@model MedicineModel
@{
ViewBag.Title = "Update Medicine";
}
<script src="@Url.Content("~/Scripts/knockout-2.1.0.js")" type="text/javascript"></script>
<script type="text/javascript">
var initialData = @Html.Raw(Json.Encode(Model));
var viewModel = {
item : ko.observable(initialData),
isDirty : ko.DirtyFlag(item)
};
ko.applyBindings(viewModel);
</script>
<hgroup class="title">
<h1>@ViewBag.Title.</h1>
</hgroup>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
<fieldset>
<ol>
<li>
@Html.LabelFor(m => m.Code)
@Html.TextBoxFor(m => m.Code, new { data_bind= "value: Code", @readonly = "readonly" })
</li>
<li>
@Html.LabelFor(m => m.Name)
@Html.TextBoxFor(m => m.Name, new { data_bind = "value: Name" })
</li>
<li>
@Html.LabelFor(m => m.GenericName)
@Html.TextBoxFor(m => m.GenericName, new { data_bind = "value: GenericName" })
</li>
</ol>
</fieldset>
<input type="submit" data-bind="enable: isDirty" value="Save" />
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
@使用CirrusAdmin.Models
@模型医学模型
@{
ViewBag.Title=“更新医学”;
}
var initialData=@Html.Raw(Json.Encode(Model));
var viewModel={
项目:ko.可观察(初始数据),
isDirty:ko.DirtyFlag(项目)
};
应用绑定(视图模型);
@ViewBag.Title。
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
@LabelFor(m=>m.Code)
@TextBoxFor(m=>m.Code,新的{data_bind=“value:Code”,@readonly=“readonly”})
@LabelFor(m=>m.Name)
@TextBoxFor(m=>m.Name,新的{data_bind=“value:Name”})
@LabelFor(m=>m.GenericName)
@TextBoxFor(m=>m.GenericName,new{data\u bind=“value:GenericName”})
}
@节脚本{
@Scripts.Render(“~/bundles/jqueryval”)
}
我认为您在这个过程中应用绑定太早了。试着移动
ko.applyBindings(viewModel);
在您的表格下方(即)
@使用(Html.BeginForm())
{
//你的表格代码在这里
}
应用绑定(视图模型);
你说的“谁都不行”是什么意思?它起作用了吗?你改变了什么?DirtyFlag是一个ko插件你引用了正确的脚本文件吗?你的浏览器控制台窗口中有JS错误吗?浏览器中没有错误,只是不起作用,我不确定我是否有正确的代码。
@using (Html.BeginForm())
{
//your form code stuff here
}
<script type="text/javascript">
ko.applyBindings(viewModel);
</script>