【问题标题】:How to save radiobutton data in MVC controller edit method?如何在 MVC 控制器编辑方法中保存单选按钮数据?
【发布时间】:2015-10-17 17:12:15
【问题描述】:

在编辑页面中,我有两个性别单选按钮,一旦用户选择性别男性或女性,该值应保存在数据库中。

我尝试了所有提出的解决方案,但没有一个可行。

这是查看页面:

        <div class="form-group">
        @Html.LabelFor(model => model.IsMale, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="radioLeft col-sm-3">
            @Html.RadioButtonFor(model => model.IsMale, "Male", new { @checked = true })Male
            @Html.RadioButtonFor(model => model.IsMale, "Female", new { @checked = false })Female
            @Html.ValidationMessageFor(model => model.IsMale, "", new { @class = "text-danger" })
        </div>
    </div>

这里是控制器编辑方法:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit( WebUser webUser)
    {
        if (ModelState.IsValid)
        {

            db.Entry(webUser).State = EntityState.Modified;           
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(webUser);
    }

【问题讨论】:

  • '...but none of works' - 什么你尝试过什么?
  • 你说的“但是没有用”是什么意思?您能否向我们提供更多信息,了解当您选中单选按钮时会发生什么?
  • 感谢您的快速回复。当我点击保存按钮时,它不起作用,它显示“值'女性'对性别无效。”,为什么?
  • 听起来你模型中的任何数据字段都不支持该字符串
  • 我的模型是:public Nullable IsMale { get;放; }

标签: c# asp.net-mvc radio-button edit


【解决方案1】:

您的类型是Nullable&lt;bool&gt;,但您发送的是字符串"Male""Female"。 modelbinder 应该如何知道哪个是真,哪个是假?如果你有一个 bool 类型,那么你需要传递一些布尔值,例如:

@Html.RadioButtonFor(model => model.IsMale, true) Male
@Html.RadioButtonFor(model => model.IsMale, false) Female

【讨论】:

  • 非常感谢!错误信息消失了!非常感谢!但我仍然无法保存“IsMale”的值。提交更改时,编辑控制器只是跳转到“catch (DataException)”,显示“无法保存更改。再试一次,如果问题仍然存在,请与系统管理员联系。”我的编辑控制器有错误吗?
  • public ActionResult Edit(WebUser webUser) { try { if (ModelState.IsValid) { db.Entry(webUser).State = EntityState.Modified; db.SaveChanges(); } return RedirectToAction("详细信息"); } catch (DataException) { ModelState.AddModelError("", "无法保存更改。再试一次,如果问题仍然存在,请联系您的系统管理员。"); } 返回视图(网络用户); }
  • DataException 是一个低级异常,这意味着发送到 SQL Server 的查询在那里导致了错误。这通常是由于数据库模式与 Entity Framework 期望的不同步引起的。例如,如果您直接在 SQL Server 上更改了列的名称,但代码中的所有内容都保持不变。它还假设您正在使用 Database First、Code First 和现有数据库,或者您只是在 Code First 中禁用了迁移。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 2018-09-02
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
相关资源
最近更新 更多