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