Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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
Javascript ASP.NET表单根据另一个字段中的节显示表单字段_Javascript_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

Javascript ASP.NET表单根据另一个字段中的节显示表单字段

Javascript ASP.NET表单根据另一个字段中的节显示表单字段,javascript,c#,asp.net,asp.net-mvc,Javascript,C#,Asp.net,Asp.net Mvc,我对ASP.Net开发、MVC5以及几乎所有Windows操作系统都是新手,所以我肯定我做错了什么。我在这里到处寻找答案,发现了类似的问题,但我显然做错了什么…可能是因为这些答案假定我对我工作的环境有更多的了解 所选择的框以“是”开头,我更愿意选择“否”,并且不管怎样,字段都会显示出来 我怀疑javascript放错了位置和/或遗漏了一些重要内容 我有一些代码: <p> Are you a Licensee? @Html.DropDownListFor(x => x.Licen

我对ASP.Net开发、MVC5以及几乎所有Windows操作系统都是新手,所以我肯定我做错了什么。我在这里到处寻找答案,发现了类似的问题,但我显然做错了什么…可能是因为这些答案假定我对我工作的环境有更多的了解

所选择的框以“是”开头,我更愿意选择“否”,并且不管怎样,字段都会显示出来

我怀疑javascript放错了位置和/或遗漏了一些重要内容

我有一些代码:

<p>
Are you a Licensee?
@Html.DropDownListFor(x => x.Licensee, new[] {
        new SelectListItem() {Text="Yes", Value = bool.TrueString},
        new SelectListItem() {Text="No", Value = bool.TrueString} }, new {id = "Licensee"})

@section scripts{ <script type="text/javascript">
    $(function ()
    {
        $('#Licensee').change(function ()
        {
            var value = $(this).val();

            if (value == true)
            {
                $('#LicName').show();
                $('#LicUrl').show();
                $('#LicRole').show();
            }
            else
            {
                $('#LicName').hide();
                $('#LicUrl').hide();
                $('#LicRole').hide();
            }
        });
    });
    </script> }

    <p>Your Licensee Name: @Html.TextBoxFor(x => x.LicenseeName, new { id = "LicName" })</p>
    <p>Your Licensee Url: @Html.TextBoxFor(x => x.LicenseURL, new { id = "LicUrl" })</p>
    <p>your LIcensee Role: @Html.TextBoxFor(x => x.LicenseRole, new { id = "LicRole" })</p>
</p>

你是持牌人吗?
@Html.DropDownListFor(x=>x.许可证持有人,新[]{
新建SelectListItem(){Text=“Yes”,Value=bool.TrueString},
新建SelectListItem(){Text=“No”,Value=bool.TrueString}},新建{id=“被许可方”})
@节脚本{
$(函数()
{
$(“#被许可方”)。更改(功能()
{
var值=$(this.val();
如果(值==true)
{
$('#LicName').show();
$('#LicUrl').show();
$('#LicRole').show();
}
其他的
{
$('#LicName').hide();
$('#LicUrl').hide();
$('#LicRole').hide();
}
});
});
}
您的被许可人名称:@Html.TextBoxFor(x=>x.LicenseeName,new{id=“LicName”})

您的被许可人Url:@Html.TextBoxFor(x=>x.LicenseURL,新的{id=“LicUrl”})

您的被许可人角色:@Html.TextBoxFor(x=>x.LicenseRole,new{id=“LicRole”})

更改

@Html.DropDownListFor(x => x.Licensee, new[] {
        new SelectListItem() {Text="Yes", Value = bool.TrueString},
        new SelectListItem() {Text="No", Value = bool.TrueString} }, new {id = "Licensee"})

这将有助于先显示值No

它们总是显示在JavaScript中的另一个原因是,您正在为每个值(是和否)传入
bool.TrueString
。对于选项“否”,您需要使用
bool.FalseString

例如:

new SelectListItem() {Text="No", Value = bool.FalseString} }, new {id = "Licensee"}),

好的,我通过这里提示中的复选框,特别是这一页,找到了答案

我将其放在查看页面的标题部分:

function showMe(box, name) {

    var chboxs = document.getElementsByName(name);
    var vis = "none";
    for (var i = 0; i < chboxs.length; i++) {
        if (chboxs[i].checked) {
            vis = "block";
            break;
        }
    }
    document.getElementById(box).style.display = vis;
}


您的
两个值都是
value=“true”
(在这两个值中使用
value=bool.TrueString
)。但是你真的应该使用一个复选框,我可能应该添加,我的期望是表单将被呈现,当用户在下拉列表中更改选择时,其他字段将出现或消失…因此我可能完全是在错误的树上搜索…并且
if(value==true)
无论如何都是真的-如果(value==“true”)@StephenMuecke-Doh!我将“否”改为假字符串…我考虑了复选框,这会使这更容易吗?
@Html.CheckBoxFor(m=>m.license)
-then
$('#license').change(function(){if($(this).is(':checked)){else{…})
但将所有3个文本框用
id包装在
中,并显示/隐藏divI修改为:@Html.DropDownListFor(x=>x.licensize,new[]{new SelectListItem(){Text=“No”,Value=bool.false string},new SelectListItem(){Text=“Yes”,Value=bool.TrueString},new{id=“licensize”})`
function showMe(box, name) {

    var chboxs = document.getElementsByName(name);
    var vis = "none";
    for (var i = 0; i < chboxs.length; i++) {
        if (chboxs[i].checked) {
            vis = "block";
            break;
        }
    }
    document.getElementById(box).style.display = vis;
}
<p>
    Are you a Licensee?

    @Html.CheckBoxFor(x => x.Licensee, new { onclick="showMe('LicenseeYes', 'Licensee')" } )

    <div id="LicenseeYes", style="display:none">
        <p>Your Licensee Name: @Html.TextBoxFor(x => x.LicenseeName)</p>
        <p>Your Licensee Url: @Html.TextBoxFor(x => x.LicenseURL)</p>
        <p>your LIcensee Role: @Html.TextBoxFor(x => x.LicenseRole)</p>
    </div>
</p>
function showMe(box, name) {        
    var chkbox = document.getElementById(name);
    var vis = "none";
    if (chkbox.checked) {
        vis = "block"
    }
    document.getElementById(box).style.display = vis;
}