【问题标题】:Check Box Value Passed In FormCollection MVC Form在 FormCollection MVC 表单中传递的复选框值
【发布时间】:2020-05-08 08:31:38
【问题描述】:

我有一个 FormCollection 被传回一个控制器,它被处理,但是,如果它的 true 是 'true,false',则传回的值是 'false'。我的领域使用 iChecks。

我正在构建的对象如下:

field.IsSelected = Convert.ToBoolean(form["Field.IsChecked"]);

获得正确值的最佳方法是什么?

【问题讨论】:

    标签: c# asp.net-mvc entity-framework


    【解决方案1】:

    我建议这样做:

    form["Field.IsChecked"].Contains("true") 它已经返回一个布尔值,所以你不必转换。

    你可以去:

    Convert.ToBoolean(form["Field.IsChecked"].Split(',').First()); 要么 Convert.ToBoolean(form["Field.IsChecked"].Split(',')[0]);

    【讨论】:

    • 选项一的作用就像一个魅力谢谢!感谢您的快速帮助。
    【解决方案2】:

    最好使用 Model Binder 来实现这个目的,这是现在这样做的正确方法,你可以简单地在你的模型类中添加一个布尔属性,然后使用 MVC 的复选框帮助器。

    public class YourViewModel
    {
        public bool IsChecked { get; set; }
    }
    

    还有你的 ActionMethod:

    public async Task<ActionResult> Index(YourViewModel viewModel)
    {
        field.IsSelected = viewModel.IsChecked;
    }
    

    你的看法是这样的:

    @using (Html.BeginForm("Index", "YourController", FormMethod.Post)) 
    {
    
        <div>  
            @Html.CheckBox("IsChecked")
        </div>
    
        <input type="submit" value="Submit" /> 
    } 
    

    【讨论】:

    • 萨拉赫,您好,感谢您的帮助。在正常情况下,我会相应地实现我的复选框,但我正在修补使用 FormCollections 的遗留系统上的错误,并且尽管我很想更改它,但使用模型绑定时间对我不利。再次感谢您的帮助,非常感谢。
    【解决方案3】:

    这对我有用

    Convert.ToBoolean(form["Field.IsChecked"].Split(',').First());
    

    【讨论】:

      猜你喜欢
      • 2011-11-15
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 2012-02-19
      相关资源
      最近更新 更多