【问题标题】:MvcContrib CheckBoxListMvcContrib CheckBoxList
【发布时间】:2010-05-10 05:52:24
【问题描述】:

也许有人可以解释这种行为:

我正在使用最新版本的 MvcContrib 中的 CheckBoxList 当我的页面第一次加载时 - 我只是返回我的视图

return View(Product.GetProduct(productId)); 

一切似乎都很好。 所有 html 简单控件都填充成功,包括 checkboxlist:

<%= this.CheckBoxList(model => model.Product.Statuses)
    .Options(Model.Statuses, model => model.Id, model => model.Name)
    .ItemFormat("{0}<br />")
%>

所以,我在这个表单上有几个按钮,例如按钮“搜索”()。如果找到任何东西,我可以按 productId 搜索并显示它。 所以我将 productId 传递给我的控制器,这个控制器以与第一次相同的方式返回视图:

return View(Product.GetProduct(productId))

顺便说一句,我使用的是相同的逻辑 - 都是一样的:相同的视图、相同的控制器、相同的操作……没什么新意。但在这种情况下,我收到了以下错误消息:

字符串未被识别为有效的布尔值。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.FormatException:字符串未被识别为有效的布尔值。

来源错误:

Line 268:                              <labe**strong text**l for="group<%=item.Value%>"><%=item.Text%></label><br />
Line 269:                          <% } %>--%>
Line 270:                          <%= this.CheckBoxList(model => model.Product.Statuses).Options(Model.Statuses, model => model.Id, model => model.Name).ItemFormat("{0}<br />")%>
Line 271:                        </div>
Line 272:                        </div>   

我发现了,当第一次和之后加载视图时,如果所有的复选框未选中我正在点击搜索 - 一切顺利,但是当检查任何复选框时,我点击了 - 我收到这个错误。

我需要帮助。有什么好主意吗?

【问题讨论】:

    标签: mvccontrib checkboxlist


    【解决方案1】:

    我认为 CheckBoxList 中存在错误,因此当它验证列表时,它要求复选框的值是布尔可转换字符串(“false”、“true”)。

    因此,在您的示例中,如果您将 model => model.id 更改为 model => "true",您会发现不会出现错误:

     <%= this.CheckBoxList(model => model.Product.Statuses).Options(Model.Statuses, model => "true", model => model.Name).ItemFormat("{0}<br />")%>
    

    但这不是你想要的。我的解决方法是在 ModelState 无效时从 ModelState 中删除 CheckBoxList 的元素(在您的情况下为 model.Product.Statuses)。

    你需要在ModelState中找到model.Product.Statuses对应的key并移除。我正在为我的案例使用以下 sn-p。您需要更改模型和属性。

    if (!ModelState.IsValid)
    {    
      ModelState.Remove(PropertyHelper<EmailModel>.GetProperty(x => x.Attachments).Name);
      ...
    

    我正在使用 PropertyHelper 表单 How to get the PropertyInfo of a specific property?

    我还在 mvccontrib 问题跟踪器中找到了这个相关链接: http://mvccontrib.codeplex.com/workitem/7071

    【讨论】:

      猜你喜欢
      • 2010-09-17
      • 2012-08-29
      • 2011-10-03
      • 1970-01-01
      • 2012-10-09
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      相关资源
      最近更新 更多