2013-07-16 47 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

你可以把一个隐藏字段用于标识和处理其他在你的行动方法是这样的:

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

HiddenFor只是产生隐藏字段,但是这永远不会确保值不会被编辑。简单的F12点击,任何人都可以使用开发人员工具编辑值。相反,你应该用单场创建视图模型和控制器动作检查服务器端

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

而且东西都这样

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

    return RedirectToAction("Index"); 
}