从Javascript访问列表项模型的属性

时间:2015-08-21 05:22:13

标签: javascript jquery asp.net-mvc-3

我正在使用Javascript编辑项目列表中某行的属性,我正在关注这样的HTML视图

ON编辑按钮单击我显示弹出窗口并在弹出的保存事件上我想设置所选行的属性。

从html控制台我可以看到命名模式就像name = [1] .IsVerified [2] .isVerified等或一般[counter] .Property但是当我尝试使用JQUery访问元素时我没有得到元素< / p>

Facebook SDK returned an error: Cross-site request forgery validation failed. The "state" param from the URL and session do not match.

那么如何从javascript

设置属性字段的值

2 个答案:

答案 0 :(得分:1)

不要使用行为污染您的标记,而是使用Unobtrusive Javascript。为您提供链接类名称并将Licensor属性的值添加为data-属性,并将2个隐藏的输入移动到同一个表格单元格中以便于选择

<td>
    @Html.HiddenFor(m => m[i].ActionId)
    @Html.HiddenFor(m => m[i].ReferenceId)  
    <a href="#" data-licensor="@Model[i].Licensor" class="btn verify">Verify</a>
</td>

var currentCell;
$('.verify').click(function() {
  currentCell = $(this).closest('td');
  licensor = $(this).data('licensor');
  // get your partial view and display the popup
});

同样为确认按钮提供唯一的id属性

$('#confirm').click(function() {
  var inputs = currentCell.children('input');
  inputs.eq(0).val(....); // set the value of ActionId
  inputs.eq(1).val(....); // set the value of ReferenceId
});

请注意,您的问题表明将相应的IsVerified复选框设置为true 。因为这是在上一个单元格中,您可以使用

进行
currentCell.prev('td').find('input[type="checkbox"]').prop(checked, true);

但是你已经使用new { @disabled = "disabled" }禁用了复选框,这意味着它不会回发,但是由CheckBoxFor()生成的关联隐藏输入将意味着无论是否检查它,您将始终回发{{ 1}}

如果复选框旨在提供验证已完成的可视化表示,则更好的方法是包含绑定到false的隐藏输入和未绑定的复选框。

IsVerified

然后你可以检查&#39;如上所述的复选框,包括

<td>
    <input type="checkbox" disabled="disabled" />
</td>
<td>
    @Html.HiddenFor(m => m[i].ActionId)
    @Html.HiddenFor(m => m[i].ReferenceId)  
    @Html.HiddenFor(m => m[i].IsVerified)
    <a href="#" data-licensor="@Model[i].Licensor" class="btn verify">Verify</a>
</td>
脚本中的

您可能还需要考虑删除&#39;验证&#39;关闭弹出窗口后,从DOM链接(假设您不想再次验证

inputs.eq(2).val("True"); // set the value of IsVerified

答案 1 :(得分:0)

<tbody>        
@for (int i = 0; i < Model.Count(); i++) 

      {
            <tr>
                <td>       
                    <input typye="hidden" class="index" value="@i"/>  
                    @Html.HiddenFor(m => m[i].Licensor)                                                    
                    @Html.DisplayFor(m => m[i].Licensor ,{@id="liecenor-@i"})                                
                </td>
                            </tr>
        }
</tbody>
        </table>
<script>

    $(".table > tbody> tr").each(function () { 
    var index=$(this).find('.index').val();
    var $id="#licensor-"+index;    
    alert($($id).val());
}
</script>
相关问题