0

カミソリ構文を使用してビューにチェックボックスを表示したい。モデル プロパティ IsActive は int である必要があります。モデルは:-

public class Student
    {
        public int StudentID { get; set; }
        public string Code { get; set; }
        public string Description { get; set; }
        public int IsActive { get; set; }           
}

ビューは次のとおりです:-

<div class="editor-label">
        @Html.LabelFor(model => model.IsActive)
    </div>
    <div class="editor-field">
        @Html.CheckBoxFor(model => model.IsActive)
        @Html.ValidationMessageFor(model => model.IsActive)
    </div>

チェックボックスを表示する必要があり、チェックボックスがオンの場合は 1 をデータベースに保存し、umchecked の場合は 0 を保存する必要があります。

Plsは私を助けてください...ありがとう..

4

2 に答える 2

3

エラー メッセージでわからないことは何ですか? int プロパティに CheckBoxFor を使用することはできません。

モデルとセットを変更する必要があります

public bool IsActive {get;set;}

さて、おそらくintであるには十分な理由がありますが、コードで理由を言うのは難しいです...

IsActive が 0 または 1 しかない場合は、ViewModel クラスを使用し、クラスにマップするブール型プロパティを使用する必要があります。

public class StudentViewModel
    {
        public int StudentID { get; set; }
        public string Code { get; set; }
        public string Description { get; set; }
        public bool IsActive { get; set; }           
}

次に、データベースから学生を取得するとき(「GET」アクションで)

そのようなもの(素朴)

public ActionResult StudentEdit(int id) {
  var student = getStudentById(id);
  var model = new StudentViewModel {
                  StudentId = student.StudentID,
                  Code = student.Code,
                  Description = student.Description,
                  IsActive = student.IsActive == 1 
              };

  return View(model);
}

ビューは StudentViewModel で入力する必要があります

@model StudentViewModel

次に、POSTアクションで逆にします

[HttpPost]
public ActionResult StudentEdit(StudentViewModel model) {
    var student = getStudentById(model.StudentID);
    student.Code = model.Code;
    student.Description = model.Description;
    student.IsActive = model.IsActive ? 1 : 0;
    UpdateStudent(student);

    return Redirect...
}

編集

これは本当に素朴な答えであり、もっとうまくやれると確信しています。

そのためには、さらに情報が必要です。

Entity Framework (バージョン) を使用していますか?

はいの場合、コードが最初、データベースが最初、モデルが最初ですか?

背後にあるデータベースはどれですか?

データベースに何か変更できますか?

データベースに IsActive があるのはどの型ですか?

于 2013-01-25T07:54:10.207 に答える
0

IsActiveブール値である必要があります。@Html.CheckBoxFor()ヘルパー メソッドはブール値のパラメーターを想定しています

コードをに変更

public bool IsActive { get; set; } 
于 2013-01-25T07:54:06.670 に答える