Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用razor选中复选框后复制值_C#_Asp.net Mvc 3_Razor - Fatal编程技术网

C# 使用razor选中复选框后复制值

C# 使用razor选中复选框后复制值,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,正如标题所示,我试图在单击复选框后将值从一个文本框复制到另一个文本框。我知道如何通过javascript实现这一点,唯一的问题是需要使用razor在服务器端完成。我试图用下面的代码实现这一点,但是,它给了我一个臭名昭著的“对象引用未设置为对象实例”错误。但我不确定它指的是什么,任何帮助都将不胜感激 <div class="editor-field"> @Html.CheckBoxFor(model => model.SameAddress, new { id = "ch

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

<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> 

@CheckBoxFor(model=>model.SameAddress,新{id=“chkAddress”})
@{bool isChecked=false;
if(Boolean.TryParse(Request.Form.GetValues(“chkAddress”)[1],out isChecked)=true)
{
}
}

Razor在这方面帮不了你。有两种方法可以做到这一点

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为
chkCopy
的复选框时,您希望从id为
address1
的文本框复制到id为
address2
的文本框

工作样本:


2)使用formpost:让用户单击“复制”按钮,它会将表单提交到您的操作方法,在该方法中,您读取这些表单元素的值,并将其设置为第二个复选框的属性,然后将其返回到视图。

您应该在操作中执行此操作。您在操作中指的是什么?SameAddress是什么?您不能在viewModel上创建一个属性来执行需要在模型上执行的检查,并返回一个可以绑定到复选框的bool吗?@Ryan J-他的意思是此代码属于控制器,而不是您的视图。如果您想在服务器端执行此操作,则需要HTTP请求,然后您需要返回一个包含正确填充字段的更新视图。好的,谢谢@首先,SameAddress是viewModel中的布尔属性。如何将SameadAddress绑定到复选框?好的,谢谢!但是,如果我使用javascript,例如将数据从视图传递回控制器等,这会导致以后出现挂断吗?这非常有帮助,谢谢!我的下一个问题是,如果我这样做,我如何扩展jquery,使其能够处理多个文本框,而不仅仅是2:)?取决于您的标记。使用通用选择器。我更新了我的答案,更新了两个文本框。