2013-07-16 5 views
0

다음 모델을 가지고 있습니다.필드의 일부를 편집 하시겠습니까?

public class M 
{ 
    public int Id { get; set; } 
    public int A { get; set; } 
    public int B { get; set; } 
    public int C { get; set; } 
    public int D { get; set; } 
    .... 
} 

Asp.Net Mvc 4 페이지는 하나의 열만 편집하면됩니다. 그리고 다른 모든 열에 @Html.HiddenFor()을 넣어야했습니다. 그렇지 않으면 B, C, D ...에 대한 데이터베이스 열이 0으로 재설정됩니다. 그것을 피하는 방법입니까?

@model MyMvc.Models.M 

@using (Html.BeginForm())) 
{ 
    @Html.HiddenFor(m => m.Id) 
    @Html.EditorFor(m => m.A) 
    @Html.HiddenFor(m => m.B) 
    @Html.HiddenFor(m => m.C) 
    @Html.HiddenFor(m => m.D) 
    ...... 
} 

답변

1

당신은 단지 ID에 대한 숨겨진 필드를 넣을 수 있습니다 컨트롤러 액션이 같은 서버 측

public class EditMViewModel 
{ 
    public int A { get; set; } 
} 

을 그리고 뭔가에 모든 것을 확인하고 다른 사람을 처리해야 다음과 같은 작업 방법에서 :

public ActionResult SaveM(M m) 
{ 
    var mToEdit = db.find(m.Id); 
    mToEdit.A = m.A; 
    db.SaveChanges(); 
    //....... 
} 
1

HiddenFor은 숨겨진 필드를 생성하지만이 값을 편집 할 수 없습니다 것을 보장하지 않습니다. 간단한 F12 클릭으로 누구나 개발자 도구를 통해 가치를 편집 할 수 있습니다. 대신, 당신은 하나의 필드와 뷰 모델을 만들고

public ActionResult Edit(int id, EditMViewModel m) 
{ 
    var someObject = LoadFromDb(id); 
    if (ModelState.IsValid) 
    { 
     someObject.A = m.A; 
     SaveToDb(someObject) 
    } 

    return RedirectToAction("Index"); 
} 
관련 문제