【问题标题】:MVC UI for ASP.NET CheckboxFor Issue用于 ASP.NET 复选框的 MVC UI 问题
【发布时间】:2016-01-14 20:54:57
【问题描述】:

我对 ASP.NET 的 MVC Telerik UI 有一个大问题 我正在尝试为布尔字段设置一个复选框。我知道我们有两个输入字段可以在未触摸框时返回值 false。 当我不触摸 CBox 时,我得到了预期的值“假”。当我选中该框时,我也得到了错误,因为 CBOx 正在返回一个 string = "true,false" 这使得无法直接转换为 bool。

查看

public class role
{
    public string role_name { get; set; }
    public bool add_school { get; set; }
}

控制器

    public ActionResult test()
    {
        return View();
    }

    [HttpPost]
    public async Task<ActionResult> test(Models.role role)
    {
        var z = Request["cb_addschool"];
        var x = 1;
        return RedirectToAction("Index");
    }

查看

    @model Models.role

    @using (Html.BeginForm("test", "Home", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
    {
        @Html.AntiForgeryToken()
        <h2>Add a New Role</h2>
        <hr />
        @Html.ValidationSummary("", new { @class = "text-danger" })

        <div class="form-group">
            @Html.LabelFor(m => m.role_name, new { @class = "col-md-1 control-label" })
            <div class="col-md-10">
                @Html.TextBoxFor(m => m.role_name, new { @class = "form-control form-control-big" })
            </div>
        </div>

        <div class="form-group">
        @Html.Kendo().CheckBoxFor(m=>m.add_school).Name("cb_addschool").Label("Add School")
        </div>

        <div class="form-group">
            <div class="col-md-offset-3 col-md-9">
                <input type="submit" class="btn btn-login" value="Register" />
            </div>
        </div>
    }

请帮忙?

【问题讨论】:

  • 从 Kendo 代码中删除 .Name("cb_addschool")(当绑定到模型时,您永远不应该更改控件​​的 name 属性)。然后 add_school 属性将在您提交时正确绑定在您的模型中 - 不需要您 var z = Request["cb_addschool"]; 代码行
  • 我在 Kendo 的某个地方看到我们应该总是定义 Name 属性? var z 仅用于测试复选框真正返回的内容
  • 没有。如果您删除它并检查您生成的 html,您将看到它现在与您的模型属性相关的 &lt;input type="checkbox" name="add_school" ... /&gt;

标签: c# asp.net-mvc-4 telerik-mvc


【解决方案1】:

从您的操作方法中删除此代码:

var z = Request["cb_addschool"];

你的角色模型中有这个价值。所以在这种情况下这是没有意义的。

比从 Kendo CheckBoxFor 中删除此属性:

.Name("cb_addschool")

您不必需要它(没有它,属性将正确绑定)。

小提示:如果您使用的是 Kendo - 使用 Kendo().TextBoxFor 方法而不是 @Html.TextBoxFor(或在您的 TextBoxFor 中添加“k-textbox”类 - 它将使用 Kendo CSS 样式) .

这是一个例子:

@(Html.Kendo().TextBoxFor(model => model.role_name)
.HtmlAttributes(new { placeholder = "Select role", @class = "form-control form-control-big" })
)

【讨论】:

    猜你喜欢
    • 2013-02-15
    • 1970-01-01
    • 2014-09-10
    • 2021-06-28
    • 2013-11-17
    • 1970-01-01
    • 2011-10-30
    • 2010-11-13
    • 1970-01-01
    相关资源
    最近更新 更多