【问题标题】:ASP MVC Radiobutton from model in list列表中模型的 ASP MVC 单选按钮
【发布时间】:2015-06-06 06:20:15
【问题描述】:

我想显示一个使用 Entity Framework 和 MVC 5 的模型中的单选按钮列表。 该列表与单选按钮一起显示,但单选按钮的值对于所有行总是相同的,我在代码中找不到错误。 也许这里有人有想法?

代码:

型号:

public class ResultIndexModel
{
    public IList<ResultInsertModel> resultList { get; set; }
}

public enum Beoordeling
{
    Voldoende, 
    Onvoldoende
}
public class ResultInsertModel
{
    public int UserId { get; set; }
    public int ExamId { get; set; }
    public int Id { get; set; }
    public Beoordeling isSufficient { get; set; }
    public Nullable<decimal> Result { get; set; }

    public Exam Exam { get; set; }
    public User User { get; set; }

}

考试管理员:

[Authorize]
public ActionResult AddResults(int? id)
{
  if (id == null)
  {
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
  }

  ViewBag.ExamName = ExamCatalog.GetName(id);

  return View(ExamCatalog.GetExamStudents(id));
}

[Authorize]
   [HttpPost]
   [ValidateAntiForgeryToken]
        public ActionResult AddResults([Bind(Include = "Id,Result")] List<ResultInsertModel> model)
        {
            int examId = 0;
            if (ModelState.IsValid)
            {
                foreach (var i in model)
                {
                    var c = db.ExamSubscription.Where(a => a.Id == i.Id).FirstOrDefault();
                    var e = db.Exam.Where(a => a.Id == c.ExamId).FirstOrDefault();

                    if (c != null)
                    {
                        if (!e.ResultIsDecimal)
                        {
                            if (i.isSufficient == Beoordeling.Voldoende)
                            {
//isSufficient have always the same value Beoordelig.Voldoende ?)
                                //Voldoende
                                c.Result = 10;
                            }
                            else
                            {
                                //onvoldoende
                                c.Result = 1;
                            }
                        }
                        else
                        {
                            c.Result = i.Result;
                        }
                    }

                    examId = c.ExamId;
                }

                //db.Entry(sub).State = EntityState.Modified;
                db.SaveChanges();

                //ResultsEntered vullen op examen
                var exam = db.Exam.Where(a => a.Id == examId).FirstOrDefault();

                if (exam.ResultsEntered == null)
                {
                    exam.ResultsEntered = System.DateTime.Now;

                    db.Entry(exam).State = EntityState.Modified;
                    db.SaveChanges();
                }


            }
            return RedirectToAction("Results", new { id = examId });
        }

查看:

@Html.RadioButtonFor(model => model[i].isSufficient, Beoordeling.Voldoende, new { @checked = "checked", id = "voldoende" + i })
                        @Html.Label("voldoende" + i, "Voldoende")
                        @Html.RadioButtonFor(model => model[i].isSufficient, Beoordeling.Onvoldoende, new { id = "onvoldoende" + i})
                        @Html.Label("onvoldoende" + i, "Onvoldoende")

输出 HTML:

<input checked="checked" data-val="true" data-val-required="Het veld isSufficient is vereist." id="voldoende0" name="[0].isSufficient" type="radio" value="Voldoende" />
<label for="voldoende0">Voldoende</label>
<input id="onvoldoende0" name="[0].isSufficient" type="radio" value="Onvoldoende" />
<label for="onvoldoende0">Onvoldoende</label>

正如您在 Controller 中的注释中看到的,isSufficient 始终具有值“Beoordeling.Voldoende”。你能帮帮我吗?

【问题讨论】:

  • 渲染源中单选按钮的值是多少?
  • 对不起,我已经在原帖中添加了生成的代码。
  • 从方法中删除[Bind(Include = "Id,Result")]。您的排除属性 isSufficient 无法回发,因此它是默认值(Voldoende)。还要删除 new { @checked = "checked", - 您使用的是 stronly 类型的帮助器,因此所选按钮将是 Beoordeling 的值

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


【解决方案1】:

我找到了解决办法。我现在使用 Result 而不是 RadionbuttonFor(isSufficient)。我现在不知道它是否是一个好的解决方案,但它确实有效!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多