2012-05-17 37 views
0

正如标题所暗示的,我试图在单击复选框后将值从一个文本框复制到另一个文本框。我知道如何通过JavaScript来做到这一点,唯一的问题是它需要用剃刀完成服务器端。我正试图用下面的代码来实现这一点,但它一直在给我臭名昭着的“对象引用未设置为对象的实例”。错误。但我不确定它是指什么,任何帮助将不胜感激。使用剃刀检查复选框后的复制值

<div class="editor-field"> 
    @Html.CheckBoxFor(model => model.SameAddress, new { id = "chkAddress" }) 

    @{bool isChecked = false; 
     if (Boolean.TryParse(Request.Form.GetValues("chkAddress")[1], out isChecked) == true) 
     { 

     } 
    } 
</div> 
+1

你应该做的是,在行动。 – SLaks

+0

你在动作中意味着什么? –

+0

什么是SameAddress?你可不可以在你的viewModel上做一个属性来完成需要在模型上完成的检查并返回一个你可以绑定到复选框的布尔值? –

回答

2

剃刀不会帮你这个忙。有两种方法可以做到这一点。

1)使用javascript:听取复选框更改事件,如果选中,读取第一个文本框的内容并将其粘贴到第二个。这是我会选择的首选。

这样

$(function(){ 
    $("#chkCopy").change(function(){ 
     $("#address2").val(""); 
     if(this.checked) 
     { 
      $("#address2").val($("#address1").val()) 

      //Lets read city and paste it in the second place as well. 
      $("#city2").val($("#city1").val()) 
     }     
    }); 
});​ 

一些东西。假设你想从文本框复制ID为address1 ID为address2到文本框与ID chkCopy复选框,单击

当工作样本:http://jsfiddle.net/9fM89/4/

2)使用表格:让用户点击“复制”按钮,它会做一个表单提交给您action方法,在这里读取这些表单元素的值,并将其设置为第二个复选框的那些属性并将其返回给视图。

+0

好的,谢谢!这会导致后来挂起,虽然如果我使用JavaScript,例如从视图传回数据到控制器等? –

+0

这有助于很多,谢谢!我的下一个问题是,如果我这样做,我该如何扩展这个jQuery,以便它可以用于多个文本框,而不仅仅是2 :)? –

+0

取决于你的标记。使用通用选择器。我更新了我的答案,有2个文本框更新。 – Shyju