当前位置: 首页 > 知识库问答 >
问题:

ASP.NETCore FromForm和FromBody相同的动作

经景辉
2023-03-14

我可以同时使用“来自表单”和“从正文”属性来操作吗?

public IActionResult Index([FromBody][FromForm] Person model){
.....
}

共有2个答案

江志业
2023-03-14

请看看这个图书馆https://github.com/shamork/Toycloud.AspNetCore . MVC . model binding . bodyandformbinding

我使用了源代码,并修改了一点,因为有一个问题。ComplexTypeModelBinderProvider已过时的. Net 5

https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.modelbinding.binders.complextypemodelbinderprovider?view=aspnetcore-5.0

简而言之,这避免了必须这样做

    public class JsonRequestItem {
        public string jsonRequest { get; set; }
    }

    [HttpPost]
    [ActionName("NewRequest")]
    [Consumes("application/json")]
    public IActionResult NewRequestFromBody([FromBody]JsonRequestItem item) {
        return NewRequest(item.jsonRequest);
    }

    [HttpPost]
    [ActionName("NewRequest")]
    [Consumes("application/x-www-form-urlencoded")]
    public IActionResult NewRequestFromForm([FromForm]JsonRequestItem item) {
        return NewRequest(item.jsonRequest);
    }

    private IActionResult NewRequest(string jsonRequest) {
        return new EmptyResult(); // example
    }

现在您可以简化为一个操作,同时获得FromBody和FromForm

    [HttpPost]
    [ActionName("NewRequest")]
    public IActionResult NewRequestFromBodyOrDefault([FromBodyOrDefault]JsonRequestItem item) {
        return new EmptyResult(); // example
    }
左丘昊天
2023-03-14

不,这是不可能的。

FromForm属性用于从内容类型应用程序/x-wan-form-urlencoded发送的提交表单中传入的数据,而FromBody将以默认方式解析模型,在大多数情况下,这是由内容类型应用程序/json从请求正文发送的。

 类似资料:
  • 我有类别片段和子类片段用于输入要查看的类别子类。我在导航图xml中有操作来打开子类片段。如果我打开任何根类别并单击其任何子类别,那么如果单击的子曲库有子曲库,那么当用户单击它的子曲库时,我应该打开子类片段。有像树一样的方案: 根类别片段: 子类别片段: 下一个子类别片段: 当我单击最后一个子类别片段,其中与前一个父片段相同的片段(相同的操作)时,我得到以下错误: 此处导航xml: 有人知道如何在N

  • 我正在实现 web api 2,我发现 Guid 映射的行为很奇怪。这是我的问题定义 这是我的模型示例 我在控制器上执行以下操作,我将MyModel作为输入[FromBody] 一切正常,而不是Guid映射。当我在请求正文中发布新MyModel的JSON时: 名称被正确设置为“Name ”,但Guid每次都生成为新的Guid。 请问是什么导致了这个问题?如何设置Guid值的正确映射?

  • 问题内容: 我正在尝试扩大以前的任务。它是画一个风扇,并有一个滑块来控制播放速度,并带有播放,暂停和反转风扇的按钮。这是我的作业代码: 我想知道是否有人可以帮助我。我很难让它工作。香港专业教育学院试图制作一个包含多个扇形的hbox,但是它们的尺寸会缩小,而当我调整框的大小时却不会增长。 基本上,我正在努力做到这一点,因此您可以使用一个滑块,最多允许5个扇形面板。增加它会增加更多的扇形,减小它会带走

  • 问题内容: 我有2个div并排。我不知道它们的高度,它根据内容而改变。有没有一种方法可以确保它们始终保持相同的高度,即使其中一个拉伸时也只能使用CSS? 我做了一个小提琴来展示。我希望红色和蓝色的div高度相同… 这是CSS: 问题答案: 您可以尝试使用float来代替使用float。但是,您可能会发现某些较旧的浏览器不了解此规则。见下文:

  • 问题内容: 我想做这样的事情: 现在调用类或它的实例: 显然,此确切的代码不起作用,但是是否有类似的方法可以使它起作用?还是任何其他解决方法都可以在没有太多“怪异”内容的情况下获得这种行为? 问题答案: 类和实例方法位于同一个命名空间中,并且您不能像这样重用名称。在这种情况下,最后的定义将获胜。 类方法将继续在实例上运行,但是, 无需 创建单独的实例方法。只需使用: 因为方法继续绑定到该类: 明确

  • 问题内容: 通过阅读的ECMAScript 5.1规范,和被区分。 那为什么要评估? 问题答案: JavaScript使用IEEE754标准表示数字。: 有符号的零 为零,具有相关的符号。在普通算术中,-0 = +0 =0。但是,在计算中,某些数字表示形式允许存在两个零,通常用 -0(负零) 和 +0(正零)表示 。这在某些带符号的整数表示形式以及大多数浮点数表示形式中都会发生。数字0通常被编码为