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

拉胡尔·库什瓦哈(Rahul Kushwaha)

场景:如何更新模型?

ASP MVC 6

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

问题1:对于更新,我应该将整个对象放回去吗?

问题2:有什么方法可以让我轻松地仅传递更新后的信息?如果是,怎么办?

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

y州

问题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补丁进行更新吗?

由于您仅发送需要更新的数据(部分数据),因此应该可以。

如果需要,您可以简单地序列化表单数据(仅具有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.
    });

  });

});

为了防止发布过多,您可以Bind在HttpPost操作方法上使用using属性使用绑定白名单但是最安全的策略是使用与客户端允许发送的内容完全匹配的视图模型类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在asp.net mvc中更新图像?

来自分类Dev

如何在ASP.NET MVC 6(ASP.NET Core)中获取returnUrl AccessDeniedPath

来自分类Dev

如何在不覆盖ASP.NET MVC中的模型类的情况下更新(通过合并)edmx

来自分类Dev

如何在ASP.NET MVC中重置会话超时

来自分类Dev

我如何在ASP.NET MVC中隐藏div

来自分类Dev

如何在ASP.NET MVC中运行作业?

来自分类Dev

如何在ASP.NET MVC中配置HTML压缩

来自分类Dev

如何在ASP.NET MVC中组织DAL

来自分类Dev

如何在ASP.NET MVC中读取PPT文件?

来自分类Dev

如何在ASP Net MVC 3中运行迁移

来自分类Dev

如何在ASP.NET MVC中获取视图路径

来自分类Dev

如何在Asp.net MVC中实现插件/插件?

来自分类Dev

如何在ASP.NET MVC中创建Webhook?

来自分类Dev

如何在ASP.NET MVC Razor中编码“ /”

来自分类Dev

DATEDIFF如何在Asp.net MVC中编写

来自分类Dev

如何在asp.net MVC中创建Ajax链接?

来自分类Dev

如何在ASP.NET MVC中屏蔽出站URL?

来自分类Dev

如何在ASP.NET MVC中运行作业?

来自分类Dev

如何在ASP.NET MVC中读取PPT文件?

来自分类Dev

如何在ASP.NET 5 MVC中访问缓存?

来自分类Dev

如何在Asp .net MVC中验证下拉列表

来自分类Dev

如何在ASP.Net MVC中调用Bootstrap模式?

来自分类Dev

如何在ASP.NET MVC中配置AutoMapper属性

来自分类Dev

asp.net MVC如何在集合中显示值

来自分类Dev

如何在asp.net mvc 中设置Iframe src?

来自分类Dev

如何在asp.net mvc 方法中读取cookie?

来自分类Dev

如何在 ASP.Net MVC 中创建下拉列表

来自分类Dev

如何在 ASP.NET MVC 中预填充表单

来自分类Dev

如何在ASP.NET MVC中的关系表/模型中包含ApplicationUser