我知道这个话题有点复杂。我会尽量保持简单,并根据需要添加细节。
我有一个ASP.NET MVC 4网站,它使用Web API进行数据访问,而前端使用KnockOutJS来保持AJAX风格。
由于我使用的是Web API,而不是使用MVC中的经典脚手架,我为每个可以执行所有CRUD操作的Model创建了一个管理页面。一般来说,这非常有效。模态弹出窗口用于输入信息以创建新对象。更新在网格中“内联”完成。
在模式对话框中输入新信息时,表单验证按预期工作。例如,将数据标记为[Required()]时将字段留空将在提交时显示错误。
然而,数据的内联编辑无效。在这种情况下,我实际上使用两个字段。 A< span> tag用于显示数据。当点击“编辑”链接时,跨度被隐藏并且<输入>而是显示标签。这可能与问题有关。 (可见性通过KnockOutJS控制.Editable()是一个布尔值)
<div class="span3">
<span data-bind="text: Name, visible: !Editable()"></span>
@Html.TextBoxFor(model => model.Name, new { data_bind = "value: Name, visible: Editable()", @class="fullwidth"})
@Html.ValidationMessageFor(model => model.Name)
</div>
请注意,涉及的数据(model.Name)是一个KO可观察对象。不确定这是否也是一个问题。
有没有人有经验让这些技术很好地融合在一起?