如何将数据属性放在Ajax.BeginForm中?

时间:2012-10-16 10:39:29

标签: asp.net-mvc knockout.js

因为我在视图中使用Knockout,所以我相应地设置了表单标记;

<form class="employeeListEditor" data-bind="submit: save">

然而,当我点击提交按钮时,我想要进行部分页面刷新。那么如何在Ajax.BeginForm中设置data-bind属性?

此语法不起作用;

<% using (Ajax.BeginForm("GetCalendar", new AjaxOptions { UpdateTargetId = "siteRows" }, new { data-bind="submit: save", class="employeeListEditor" }))
{%>

1 个答案:

答案 0 :(得分:18)

您需要在属性名称中使用unserscore(_)并且Ajax.BeginForm帮助程序(实际上所有HTML帮助程序在给定的htmlAttributes对象参数中用短划线替换unserscore)将自动替换它用短划线(-

new { data_bind="submit: save", @class="employeeListEditor" }

您需要使用Ajax.BeginForm overload来接受像this one这样的htmlAttributes:

<% using (Ajax.BeginForm(
          "GetCalendar", // actionName
          null, // routeValues
          new AjaxOptions { UpdateTargetId = "siteRows" }, // ajaxOptions
          new { data_bind="submit: save", @class="employeeListEditor" } // htmlAttributes
         ))
{%>