如何防止更新中的某些模型属性?

时间:2012-08-12 17:52:18

标签: asp.net-mvc-3 model attributes model-binding

我在ASP.Net中使用Scaffolding,我有一个名为" Page"其属性如下

public class Page
{
    private DateTime _Created_at = DateTime.Now;
    private bool _IsActive = true;

    public int ID { get; set; }

    public string Code { get; set; }

    [Required]
    [DisplayName("Parent Code")]
    public string ParentCode { get; set; }

    [Required]
    public string Title { get; set; }

    ************
} 

此处,在创建方法期间,我按如下方式更新代码属性

        public ActionResult Create(Page page)
        {
            if (ModelState.IsValid)
            {
                page.Code = page.Url.Replace(" ", string.Empty);
                page.IsActive = true;
                db.Pages.Add(page);

                db.SaveChanges();

                return RedirectToAction("Details", new { id = page.ID });
            }

            return View(page);
        }

现在,问题是,我不希望在更新方法中更改代码值,我没有将其包含在编辑表单中。但它仍然在更新“空白”#39;我更新的价值。

我为Page class尝试了[Bind(Exclude = "Code")],但没有用。

1 个答案:

答案 0 :(得分:1)

您需要在编辑视图中为code隐藏字段。使用@Html.HiddenFor(model => model.Code)