Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
Asp.net mvc CheckBoxFor生成的奇怪输入名称_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

Asp.net mvc CheckBoxFor生成的奇怪输入名称

Asp.net mvc CheckBoxFor生成的奇怪输入名称,asp.net-mvc,asp.net-mvc-4,razor,Asp.net Mvc,Asp.net Mvc 4,Razor,问题是,出于某种奇怪的原因,当我使用CheckBoxFor时,我得到了一个复选框,但ID中有“CS_uuuuuuuuuuuu8_uuuuuuuuulocals1”。不知道这是从哪里来的,也不知道为什么会发生 有什么想法吗?见下文: <input class="checkbox" id="ProductPlans_0__CS___8__locals1_plans_4__IsSelected" name="ProductPlans[0].CS$&lt;>8__locals1.pl

问题是,出于某种奇怪的原因,当我使用CheckBoxFor时,我得到了一个复选框,但ID中有“CS_uuuuuuuuuuuu8_uuuuuuuuulocals1”。不知道这是从哪里来的,也不知道为什么会发生

有什么想法吗?见下文:

<input class="checkbox" id="ProductPlans_0__CS___8__locals1_plans_4__IsSelected" name="ProductPlans[0].CS$&lt;>8__locals1.plans[4].IsSelected" type="checkbox" value="true" />


我的模型是一个单独的对象(它实际上是对象集合的一部分,但这并不重要。这是我的编辑器模板(不包括@model声明):


@CheckBoxFor(x=>Model.IsSelected,新的{@class=“checkbox”})
@Model.MarketingLabel
@Html.Raw(@Model.DisplayName)
@型号:特优ToString(“C”)
@HiddenFor(x=>Model.Id)

我知道这是一篇古老的文章,但可能会帮助其他人。 所以,在我的例子中,我遇到了同样的问题,经过几次尝试和错误后,问题得到了解决,我们发现错误本身就在for循环中

我们的模型是这样的:

for (int i = 0; i < PatiosCobro.Count; i++)
{
    <div class="col-md-4 col-sm-4 col-xs-12">
        <div class="input-group input-group">
            <div class="form-line">
                @Html.TextBoxFor(model => PatiosCobro[i].Valor, new { htmlAttributes = new { @class = "form-control" } })
            </div>
            @Html.HiddenFor(model => PatiosCobro[i].CobroId)
            @Html.NameFor(model => PatiosCobro[i].Valor) 
        </div>
    </div>
}
for(int i=0;iPatiosCobro[i].Valor,new{htmlAttributes=new{@class=“formcontrol”})
@Html.HiddenFor(model=>PatiosCobro[i].CobroId)
@Html.NameFor(model=>PatiosCobro[i].Valor)
}
这将抛出“CS\uuuuuuuu8\uuuuuu locals1\u等”

对我们有效的是取出局部变量i并在其他地方声明它

举例来说:

int i = 0;
for (i = 0; i < PatiosCobro.Count; i++)
{
    <div class="col-md-4 col-sm-4 col-xs-12">
        <div class="input-group input-group">
            <div class="form-line">
                @Html.TextBoxFor(model => PatiosCobro[i].Valor, new { htmlAttributes = new { @class = "form-control" } })
            </div>
            @Html.HiddenFor(model => PatiosCobro[i].CobroId)
            @Html.NameFor(model => PatiosCobro[i].Valor) 
        </div>
    </div>
}
inti=0;
对于(i=0;iPatiosCobro[i].Valor,new{htmlAttributes=new{@class=“formcontrol”})
@Html.HiddenFor(model=>PatiosCobro[i].CobroId)
@Html.NameFor(model=>PatiosCobro[i].Valor)
}

这是个问题吗?它看起来像是编译器自动生成的名称(类似于)对我来说。是的,这是一个问题-当我将输入发布回我的web服务器时,绑定不起作用。例如,服务器期望ProductPlans\u 0\uu plans\u 4\uu被选中。你能发布你的模型如何吗?你是如何构建复选框的?模型绑定使用输入字段的
name
属性。
id
属性是comple毫不相关。它从未发送到服务器,也从未参与任何绑定。看这个链接,这可能是MVC 6中修复的一个错误:我也只是通过将视图模型的子对象分配给变量来解决这个问题。
@var alias=model.InnerVM;@Html.HiddenFor(m=>alias.Prop)
生成一个名为
CS$8\u locals1.alias.Prop的隐藏文件
int i = 0;
for (i = 0; i < PatiosCobro.Count; i++)
{
    <div class="col-md-4 col-sm-4 col-xs-12">
        <div class="input-group input-group">
            <div class="form-line">
                @Html.TextBoxFor(model => PatiosCobro[i].Valor, new { htmlAttributes = new { @class = "form-control" } })
            </div>
            @Html.HiddenFor(model => PatiosCobro[i].CobroId)
            @Html.NameFor(model => PatiosCobro[i].Valor) 
        </div>
    </div>
}