C# 编辑部分字段?
我有下面的型号C# 编辑部分字段?,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我有下面的型号 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.NETMVC4页面只需编辑一列。我必须为所有其他列添加@Html.HiddenFor(),否则,数据库列中
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.NETMVC4页面只需编辑一列。我必须为所有其他列添加@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)
......
}
HiddenFor
只生成隐藏字段,但这永远不能确保值不会被编辑。简单的F12点击,任何人都可以用开发者工具编辑值。相反,您应该使用该字段创建ViewModel,并检查服务器端的所有内容
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");
}
您只需为Id设置一个隐藏字段,并在操作方法中处理其他字段,如下所示:
public ActionResult SaveM(M m)
{
var mToEdit = db.find(m.Id);
mToEdit.A = m.A;
db.SaveChanges();
//.......
}