asp.net-mvc - ASP.NET MVC : Prevent user from editing certain fields on the model

标签 asp.net-mvc entity-framework

我有一个模型,它有几个我不想让用户编辑的字段。我如何创建一个编辑页面,它不仅可以隐藏这些字段,还可以防止用户自己注入(inject)输入元素?

谢谢

最佳答案

看看 TryUpdateModel()(MSDN article found here .)。您可以指定您希望该方法实际更新的内容的黑名单和白名单:

public ActionResult MyUpdateMethod (MyModel myModel)
{
    if (ModelState.IsValid)
    {
        var myDomainModel = new DomainModel ();
        if (TryUpdateModel (myDomainModel,
                            new string[] { /* WhiteList Properties here */ },
                            new string[] { /* BlackList Properties here */ })

        {
            // Save it or do whatever
            return RedirectToActionV (/* Yada */);
        }
    }

    return View (myModel);
    }
}

除此之外,我会确保您发布的模型不包含您希望用户更新的字段,尽管可以使用手工制作的表单发布来覆盖这些字段。这至少会帮助您确保您不会不小心将字段放在您不想编辑的页面上。

关于asp.net-mvc - ASP.NET MVC : Prevent user from editing certain fields on the model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8752909/

相关文章:

c# - 具有字段级类型转换的 AutoMapper.ProjectTo

asp.net-mvc - 如何在 ASP.NET MVC 中动态预选 html.DropDownlist 中的项目

javascript - 选择下拉列表中的值时隐藏表单

c# - 基本登录 Controller

c# - 具有自定义端点名称的 WEB API .NET 操作

c# - DbEntityValidationException - 必填字段为空

asp.net-mvc - route.LowercaseUrls 和 routes.AppendTrailingSlash 在 MVC 中不起作用

asp.net-mvc - 需要经过身份验证的用户的 Controller 上的 Ajax 调用操作方法问题

c# - 如何使用 Entity Framework 批量插入与外键相关的多个表

c# - EntityDataSource 查询内连接