如何在ASP.NET MVC中保留/保护Edit中的某些字段

在ASP.NET MVC的“编辑”操作中,可以使用HiddenFieldFor向用户隐藏某些字段.但是,这不会保护字段(例如ID,数据创建日期)不被编辑.

例如,模型学生具有字段ID,名称和生日.我想允许用户更新名称,但不是ID或生日.

对于像这样的编辑动作

public ActionResult Edit(Student student)
{
    if (ModelState.IsValid)
    {
        db.Entry(student).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(student);
}

如何防止编辑Id和Birthday?谢谢!

解决方法

您应该使用仅包含要编辑的属性的视图模型:
public class EditStudentviewmodel
{
    public string Name { get; set; }
}

接着:

public ActionResult Edit(Studentviewmodel student)
{
    ...
}

我不建议的另一种技术是从绑定中排除某些属性

public ActionResult Edit([Bind(Exclude = "Id,Birthday")]Student student)
{
    ...
}

包括

public ActionResult Edit([Bind(Include = "Name")]Student student)
{
    ...
}

相关文章

项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并。 使用了...
安装新版本的Nginx(vim /etc/yum.repos.d/nginx.repo) [nginx-stable] name=nginx stable repo baseu...
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功...
在Windows下使用Docker,我们选择Docker Desktop这个软件,非常方便。 ## Docker Desktop介绍及安装 Do...
项目开始设计的是运行在windows下,所以一开始采用的是windows服务模式来获取多媒体文件信息,后来要求...
银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云计算、大数据、工业互联网时代对主...