如何在 ASP NET MVC 6 中更新模型?

2024-02-27

场景:如何更新模型?

ASP MVC 6

我正在尝试更新模型。为了将模型信息传递给客户端(浏览器/应用程序),我使用 DTO。

问题1:为了更新,我应该将整个对象发回吗?

问题2:有没有办法可以轻松地只传递更新的信息?如果是,怎么办?

问题3:我可以使用JSON Patch进行更新吗?


问题 2:有没有一种方法可以轻松地仅传递以下信息: 更新了吗?如果是,怎么办?

是的。您应该创建一个视图模型,该模型应仅具有视图所需的属性。

我们假设您的用例是构建一个允许用户仅编辑其姓氏的视图。

public class EditUserViewModel
{
  public int Id {set;get;}
  public string LastName {set;get;}
}

在你的获取

public ActionResult Edit(int id)
{
  var user = yourUserRepository.GetUser(id);
  if(user!=null)
  {
   var v = new EditUserViewModel { Id=id,LastName=user.LastName};
   return View(v);
  }
  return View("NotFound");
}

还有景色

@model EditUserViewModel
@using(Html.BeginForm())
{
  @Html.TextBoxFor(s=>S.LastName)
  @Html.HiddenFor(s=>s.Id)
  <input type="submit" id="saveBtn" />
}

和你的 HttpPost 操作

[HttpPost]
public ActionResult Edit(EditUserViewModel model)
{
   // Since you know you want to update the LastName only, 
   // read model.LastName and use that
   var existingUser = yourUserRepository.GetUser(model.Id);
   existingUser.LastName = model.LastName;
   yourUserRepository.Save();
   // TO DO:  redirect to success page
}

假设yourUserRepository是数据访问类抽象的对象。

问题1:为了更新,我应该将整个对象发回吗?

取决于您想从最终用户那里得到什么。使用这种视图模型方法,它将仅发布 Id 和 LastName,这就是我们的用例。

我可以使用 JSON Patch 进行更新吗?

由于您只发送需要更新的数据(部分数据),所以应该没问题。

如果你愿意,你可以简单地序列化你的表单数据(只有 Id 和 LastName)并使用 jQuerypost方法将其发送到您的服务器。

$(function(){

  $("#saveBtn").click(function(e){

    e.preventDefault(); //prevent default form submit

    var _form=$(this).closest("form");
    $.post(_form.attr("action"),_form.serialize(),function(res){
      //do something with the response.
    });

  });

});

阻止过度张贴 http://odetocode.com/blogs/scott/archive/2012/03/11/complete-guide-to-mass-assignment-in-asp-net-mvc.aspx,您可以使用绑定白名单BindHttpPost 操作方法上的属性。但最安全的策略是使用与允许客户端发送的内容完全匹配的视图模型类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP NET MVC 6 中更新模型? 的相关文章

  • 在学习 Ajax 之前我应该​​先学习 Xml 和 Javascript 吗?

    A 由于 Ajax 是基于 Javascript 和 Xml 的 我应该在学习 Ajax 之前学习 Xml 和 Javascript 吗 B 即使了解 Javascript 和 Xml 不是必须的 如果我了解 Javascript 和 Xm
  • 数据库中的 HTML 标签是不好的做法还是好的做法?

    有时我需要格式化来自数据库的特定数据或部分数据 例如 如果我有这样的 desc 存储在数据库中 HTML 4 经过调整 延伸和增强 超出了其最初的范围 为网站带来了高水平的交互性和多媒体 Flash Silverlight 和 Java 等
  • 在 MVC 控制器内打开 websocket 通道

    有没有人有在 MVC 控制器内打开 websocket 连接的良好经验 技术栈 ASPNET Core 1 0 RC1 MVC dnx46 System Net WebSockets 为什么使用 MVC 而不是中间件 为了整体一致性 路由
  • 构建 C# Web API - REST

    我即将开始一个 C 项目 我从未使用过 C 我希望在犯下愚蠢的错误并走上错误的道路之前能得到一些实施建议 我想要实现的目标基本上是在服务器上拥有一个可以通过 Web API 访问的 C 应用程序 该应用程序将接受一些字符串变量 然后返回一个
  • ASP.NET 会话状态服务器与 InProc 会话

    运行会话状态服务器而不是 InProc 的开销性能损失是多少 重要吗 我知道您可以使用状态服务器重新启动 w3wp 并保留所有会话状态 这是相对于 InProc 的唯一优势吗 这取决于您的部署计划 在单个服务器上 损失很小 但好处同样有限
  • 为什么应该或不应该将数据集、数据表等存储为 ASP.NET 页面中的会话变量?

    我正在开发一个使用 Web 服务返回的数据集的 Web 应用程序 当应用程序运行时 我将该数据集存储为会话变量 以便在用户导航到将编辑数据集中的表的不同页面时反复使用 这个想法是 当应用程序加载时 用户只需要等待一次数据 然后应用程序将使用
  • 为什么当输入很大时,asp.net 找不到合适的 apicontroller?

    我有一个功能可以立即保存我的实体列表 public void Save IEnumerable
  • 在 Visual Studio 2019 中安装 OData v4 客户端代码生成器

    我制作了一个 OData 服务 我想制作一个客户端程序来调用该服务 我想使用 OData v4 客户端代码生成器 但无法在 Visual Studio 2019 中安装它 只能在 vs2017 中安装 在vs2019中如何安装 由于 Rah
  • 从 ApiController 中的 json 序列化中排除属性

    我试图在 Web ApiControllers 中排除属性被序列化为 JSON 我已经验证了以下 2 个场景的工作原理 我已在我希望排除的属性中包含以下属性 System Web Script Serialization ScriptIgn
  • CSS 样式在部分回发时停止工作

    在 ASP net C 应用程序中 我有一个带有自定义 css 的复选框 CSS 文件是 复选框
  • Razor C# - 从数据库获取数据

    我正在使用 WebMatrix 我创建了一个数据库并放置了一个包含几行数据的表 我可以连接到它并获取数据WebGrid 但它只提供了一种使用表格输出数据的方法 这是我的 shows cshtml 代码 var db Database Ope
  • 刷新/重新加载 ASP.net 的副作用?

    我在 Web 和 ASP Net 开发方面相对较新 所以请耐心等待 在测试我们的网页的过程中 我注意到 如果用户单击 刷新 重新加载 并在 重新发送信息 对话框提示时单击 重试 则无论用户选择之前触发的最后一个事件如何到 刷新 随后将再次被
  • 如何为WCF服务创建重定向?

    我的网站 A 上托管了一个 WCF 服务 我还有另一个网站 B 它使用 IIS URL 重写将所有请求重定向到我的网站 A 但是 站点 B 不处理任何对 svc 文件的请求 返回 404 not find 知道如何让它发挥作用吗 UPD重定
  • C# 获取数据表中所有重复行的计数

    我通过运行存储过程来填充数据集 并且从数据集中填充数据表 DataSet RawDataSet DataAccessHelper RunProcedure storedprocedureName this will just return
  • IIS Express 安装目录在哪里?

    我最近开始了一个 ASP NET 教程 我想测试我用 WebMatrix 制作的页面 然而 有一个错误 Web 服务器配置为不列出该目录的内容 因此 它建议启用目录浏览并转到 IIS Express 安装目录并运行命令 那么它到底位于哪里呢
  • 设计 ASP.NET 图表控件的样式

    使用 which 是一个子集 http blogs msdn com alexgor archive 2008 11 07 microsoft chart control vs dundas chart control aspx of th
  • 上下文不是 ASP.NET 用户控件的成员

    我刚刚在 ASP NET Web 应用程序项目中创建了新的用户控件 创建后 源代码如下所示 但是一旦我向其中添加一些额外的代码 第一行就会立即出现错误 上下文不是 CS SSR RAIO SSR Project 的成员 我确实有其他用户控件
  • 非静态方法需要一个目标

    private PMS USERS currUser private bool validateUserName dbContext new PmsEntities var validateUser dbContext PMS USERS
  • 将调试器附加到 IIS 实例

    我在 XP 计算机上安装了 IIS 5 1 并且安装了 Visual Studio 2005 如何将调试器附加到 IIS 实例 顺便说一句 我没有在正在运行的进程中看到 IIS 进程 或者我可能不知道要查找什么 在视觉工作室中 单击菜单栏中
  • 将所有 Web API 请求路由到一种控制器方法

    是否可以自定义 ASP NET Web API 路由机制 将所有对 API 的请求路由到一个控制器方法 如果请求到达 www mysite com api products or www mysite com api otherResour

随机推荐

  • R中按距离聚类

    我有一个整数向量 我希望将其分成簇 以便任何两个簇之间的距离大于下限 并且在任何簇内 两个元素之间的距离小于上限 例如 假设我们有以下向量 1 4 5 6 9 29 32 36 并将上述下界和上限分别设置为 19 和 9 下面的两个向量应该
  • Team Foundation Server 合并未合并

    为什么 TFS 不想归还我的旧文件 Dev Branch Main Branch Merging Dev to Main Edit 鉴于下面的第一个答案和更多调查 我相信我正在尝试完成整个分支覆盖 这可能吗 这是一件好事 我认为最好的办法是
  • 编译 SASS 时出现预期换行错误

    我遇到的问题是我的 SASS 无法编译并且它向我显示相同的错误 Expected NewLine topper h3 text align center text decoration underline list group active
  • 在自定义 keras 损失中使用 keras 模型

    我有一个名为的常规 keras 模型e我想比较两者的输出y pred and y true在我的自定义损失函数中 from keras import backend as K def custom loss y true y pred re
  • (iPhone) selectedRange 用于不可编辑的 UITextView (或其他点击处理方法?)

    我正在使用一个UITextView保存静态内容 中文意思是字符都是固定宽度的 我想让用户单击文本中的某个字符并显示该字符的字典信息 我知道所有与缺乏复制和粘贴相关的问题 但我希望有一种方法可以做到这一点 而无需等待 iPhone 3 0 固
  • 是否有可能在源代码中抑制 sonarcloud 的警告?

    我面临一些声纳云警告的问题 这些警告在最近的将来不会得到解决 现在应该被禁用 这些警告是由 sonarcloud 在 CI 构建过程中发出的 没有任何本地分析器 有没有办法在项目 文件 类和 或方法级别上抑制源代码中的某些特定警告 官方文档
  • 在 NativeModules 中添加对象

    我想用https github com dgladkov react native image rotate https github com dgladkov react native image rotate在反应本机项目中 我用它下载
  • Java JTextPane RTF 保存

    我有以下代码尝试将 JTextPane 的内容保存为 RTF 虽然下面的代码创建了一个文件 但它是空的 关于我做错了什么有什么建议吗 像往常一样 不要忘记我是初学者 if option JFileChooser APPROVE OPTION
  • 在python中计算直方图峰值

    在Python中 如何计算直方图的峰值 我试过这个 import numpy as np from scipy signal import argrelextrema data 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 1
  • 如何在Python中将元组转换为多层嵌套字典?

    我有一个以下格式的元组 639283 298290710 1385 639283 298290712 1389 639283 298290715 1395 745310 470212995 2061 745310 470213821 371
  • 将 MySql 从 Windows 服务器迁移到 Linux

    从旧的 Win2003 服务器迁移到新的 VM 服务器 我们选择 Win 或 Linux 如果我们使用 Linux 转换当前表会有任何问题吗 将 MySQL Windows 迁移到相同版本的 MySQL Linux 您可以按如下方式 mys
  • 不可变对象的真正好处是什么

    我总是听到人们说 在使用多个线程时管理不可变对象更容易 因为当一个线程访问不可变对象时 不必担心另一个线程正在更改它 那么 如果我有一个公司所有员工的不可变列表并且雇用了一名新员工 会发生什么情况 在这种情况下 必须复制不可变列表 并且它的
  • 从 T-sql 设置肥皂请求属性

    下面是我用来连接到我的 api 服务器的代码 对于其他调用来说一切正常 但是当涉及到上传图像时 它就不起作用了 如果我将代码复制到 SoapUI 并从那里运行 它确实可以工作 但在 SoapUI 中我必须将请求属性 启用内联文件 更改为 t
  • 如何将 Metal Performance Shader 与 MTLBlitCommandEncoder 同步?

    我试图更好地理解使用时的同步要求Metal Performance Shaders and an MTLBlitCommandEncoder 我有一个MTLCommandBuffer设置如下 Use MTLBlitCommandEncode
  • PHP 在特定字符处剪切字符串

    string aaa bbb ccc ddd eee fff 我想在第三个之后剪切字符串 所以我想从字符串中获取输出 aaa bbb ccc 您可以使用strpos and substr 为了这 看 http php net strpos
  • 反转 3D 旋转,使物体始终面向相机?

    我有很多排列在 3D 空间中的精灵 并且它们的父容器应用了旋转 我如何反转精灵 3D 旋转 使其始终面向相机 Actionscript 3 这是一个测试它的代码 package import flash display Sprite imp
  • 使用 JSFuck 约定访问 RegExp

    我想替换字符串中的一些字符 例如 console log truefalse replace e E 但使用jsfuck https kamil kielczewski github io jsfuck index html约定只允许 6
  • 实体框架保存更改

    只读操作后是否需要保存更改 实体已加载到缓存 但没有任何更改 是否应该在处置之前调用保存更改 From doc DbContext SaveChanges https msdn microsoft com en us library sys
  • Session_End 不触发?

    我想在用户会话超时时注销该用户 因此在 Global asax 中使用了以下代码 protected void Session End object sender EventArgs e FormsAuthentication SignOu
  • 如何在 ASP NET MVC 6 中更新模型?

    场景 如何更新模型 ASP MVC 6 我正在尝试更新模型 为了将模型信息传递给客户端 浏览器 应用程序 我使用 DTO 问题1 为了更新 我应该将整个对象发回吗 问题2 有没有办法可以轻松地只传递更新的信息 如果是 怎么办 问题3 我可以