2017-11-05 63 views
0

から値を比較する必要がは、私は私のモデルで3つのクラスを持っている他のテーブル

モデル対象テーブルで

public class Student 
{ 
public int id { get; set; } 
[Required] 
[DisplayName("Student Name")] 
public string Name { get; set; } 
[Required] 
public int RollNO { get; set; } 
public DateTime EnrollmentDate { get; set; } 
public ICollection<Record> Records { get; set; } 
} 

public class Record 
{ 
public int Id { get; set; } 
public int StudentId { get; set; } 
public int SubjectId { get; set; } 
[Required] 
public int Marks { get; set; } 
public string Result { get; set; } 
public virtual Student Students { get; set; } 
public virtual Subject Subjects { get; set; } 
} 

public class Subject 
{ 
public int id { get; set; } 
[Required] 
public string Title { get; set; } 
[Required] 
[DisplayName("Minimum Marks")] 
public int MinMarks { get; set; } 
[Required] 
[DisplayName("Max Marks")] 
public int MaxMarks { get; set; } 
public ICollection<Record> Records { get; set; } 
} 

私は各被験者を作成し、その最小値を設定し、最大のマークが合格する必要があります...レコードテーブル(Create Page)で今選択した主題最小マークをRecord.Marksと比較し、最低マークがRecord.Resultで失敗し、その最大マークがPassでRecord.Resultになった場合...また、Result.MarksプロパティをSubject.MaxMarksと比較したい場合は、Subje ct.MaxMarksユーザーは...可能任意の形式で

をエラーを取得する必要があります。この私のコントローラである

コントローラ

public ActionResult Create([Bind(Include = "Id,StudentId,SubjectId,Marks,Result")] Record record,Subject subject) 
{ 

    var selectedSubject = db.Subjects.Where(sub => subject.id == record.SubjectId).FirstOrDefault(); 

    if (record.Marks < selectedSubject.MinMarks) 
    { 
     record.Result = "Fail"; 
    } 
    else 
     record.Result = "Pass"; 

    if (ModelState.IsValid) 
    { 
     db.Records.Add(record); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    ViewBag.StudentId = new SelectList(db.Students, "id", "Name", record.StudentId); 
    ViewBag.SubjectId = new SelectList(db.Subjects, "id", "Title", record.SubjectId); 
    return View(record); 
} 

答えて

0

ビューを選択/入力した件名に入力要素を持っていると仮定すると、 idと要素のname属性の値はSubjectIdであり、内部はform

最大マークもチェックするだけです。アクションメソッドに2番目のパラメータは必要ありません。ただそれを削除します。

var selectedSubject = db.Subjects.FirstOrDefault(a=> a.id == record.SubjectId); 
if(selectedSubject!=null) 
{  

    if (record.Marks < selectedSubject.MinMarks) 
    { 
    record.Result = "Fail"; 
    } 
    else if (record.Marks > selectedSubject.MaxMarks) 
    { 
    record.Result = "Error"; 
    } 
    else 
    { 
    record.Result = "Pass"; 
    } 
} 
else 
{ 
    ModelState.AddModeError(string.empty,"Subject not found"); 
} 
//to do : Reload dropdown data and return the view 
+0

そのはそのように動作していない...イムselectedsubject.minmarks –

+0

でヌル取得あなたがrecord.SubjectId' 'で正しいsubjectId値を持っていますか? – Shyju

+0

w8申し訳ありません...私はちょうど選択したサブジェクトでnullを取得しているアプリを実行してみてください... –

関連する問題