请帮助这样一个问题,而不是严格的判断,因为我是MVC的新手: 我有一个模型,用于通过ID在我的数据库中存储用户名需要帮助来解释Readonly ScaffoldColumn(false)
public class Names
{
public int NameId { get; set; }
public string Username { get; set; }
}
, 一个conrtoller
[HttpPost]
public ActionResult EditforModel(Names Name)
{
if (ModelState.IsValid)
{
db.Entry(Name).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(Name);
}
添加和编辑视图 增加运作良好,问题是有关编辑 我用
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend> legend </legend>
@Html.EditorForModel()
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
编辑我的模型。 当试图去这个视图我看到一个编辑器为Id和用户名,但如果我填写Id - 我有错误,因为没有这样的ID在数据库中的条目。 Ok.Let查找属性以隐藏编辑器。 [ScaffoldColumn(false)]类似于是否为Id提供编辑器的标记。 应用到我的模型我从我的View.Try另一个attr“0”ID发帖。 [ReadOnly(true)]使字段成为只读字段。但在同一时间,我在发布Id时得到了“0”。 修改视图我放在一个编辑的每个字段模型
@Html.HiddenFor(model => model.NameId)
@Html.EditorFor(model => model.Username)
但使用它是危险的,因为有些用户可以发表错误编号throgh请求后。
我不能使用[ScaffoldColumn(false)]在控制器的[Httppost]动作中应用Id,通过在DB中搜索适当的用户条目,因为名称已更改。 我不相信@ Html.HiddenFor是唯一的出路。但找不到一个:(
将id发布到隐藏的输入或操作方法参数中确实不是危险的。什么是危险的是不验证当前用户实际上可以修改传递的ID。 – dotjoe 2013-12-11 21:02:16