MVC 中的 HttpPost 与 HttpGet 属性:为什么使用 HttpPost?

2024-05-27

所以我们有 [HttpPost],这是一个可选属性。我知道这会限制调用,因此只能通过 HTTP POST 请求进行调用。我的问题是我为什么要这样做?


想象一下以下情况:

[HttpGet]
public ActionResult Edit(int id) { ... }

[HttpPost]
public ActionResult Edit(MyEditViewModel myEditViewModel) { ... }

这是不可能的,除非ActionMethodSelector属性 http://msdn.microsoft.com/en-us/library/system.web.mvc.actionmethodselectorattribute%28v=vs.108%29.aspx HttpGet and HttpPost在哪里使用的。 这使得创建编辑视图变得非常简单。所有操作链接都直接指向控制器。如果视图模型验证为 false,您只需再次弹出到编辑视图。

我会大胆地说,当涉及 ASP.NET MVC 中的 CRUD 事物时,这是最佳实践。

EDIT:

@TheLight 询问视图中需要什么来完成这篇文章。它只是一个带有 POST 方法的表单。

使用 Razor,这看起来像这样。

@using (Html.BeginForm())
{
    <input type="text" placeholder="Enter email" name="email" />
    <input type="submit" value="Sign Up" />
}

这将呈现以下 HTML:

<form action="/MyController/Edit" method="post">    
    <input type="text" name="email" placeholder="Enter email">
    <input type="submit" value="Sign Up">
</form>

当表单提交时,它将向控制器执行 Http Post 请求。行动与HttpPost属性将处理该请求。

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

MVC 中的 HttpPost 与 HttpGet 属性:为什么使用 HttpPost? 的相关文章

  • 为什么 DropDownListFor 无法识别编辑器模板中的选定值?

    我有以下名为 DropDown cshtml 的编辑器模板 这list部分工作正常 模板使用了一些我所做的巫毒来获得所需的SelectList from ViewData 控制器将视图模型中的所有选择列表放入ViewData 并且列表方面没
  • 在 asp.net mvc 4 中使用 LinkedIn OAuth“登录失败”

    我正在查看 asp net mvc 4 附带的默认 OAuth 实现 它绝对令人印象深刻 因为我所要做的就是在 AuthConfig cs 中添加这一行 OAuthWebSecurity RegisterLinkedInClient key
  • mvc 登录尝试失败后生成验证码

    所以我能够让我的验证码工作正常工作 但我的问题是 我想让它只在 3 次尝试后出现 我的一个选择是将用户重定向到一个已经有验证码的视图 重复登录 但带有验证码 然后让他通过该页面登录 还有其他选择吗 我觉得部分视图会导致页面发布出现问题 您认
  • ASP.NET MVC 控制器无法使用流内容正确返回 HttpResponseMessage

    正如标题所示 我没有让 MVC 控制器正确返回 HttpResponseMessage HttpGet AllowAnonymous public HttpResponseMessage GetDataAsJsonStream object
  • JQuery - 使用 JSON 的属性创建输入

    我正在尝试使用 JSON 设置的 id 和 value 属性创建一个输入 我有一个获取 JSON 的 ajax 调用 返回的数据很好 对于 JSON 中的每个对象 我想创建一个带有 ID 和 JSON 值的按钮 阿贾克斯调用 ajax ty
  • ASP.NET Core MVC防伪

    尝试在核心 mvc 项目中打开防伪功能 但没有成功 做了什么 添加过滤器以自动检查每个 POST 请求的防伪令牌 services AddMvc o gt o Filters Add new AutoValidateAntiforgeryT
  • 具有 ASP.NET Identity 的 MVC 5 - 用户登录时获取声明

    我正在使用 OWIN 2 0 在登录用户后 我想从数据库中检索现有的声明 但如果我尝试获取用户的声明 它们将为空 如果我将相同的代码放入任何被调用的后续控制器中 那么声明就在那里 似乎只有在首次登录后的下一个请求之前 这些声明才可用 为什么
  • 身份服务器刷新令牌资源所有者密码凭证流程

    我正在使用 IdentityServer 来控制对 API 的访问 我有一个单独的身份验证 API 它发出令牌并验证访问请求以确保 API 的安全 我让用户能够通过安全的 Web 应用程序生成访问令牌 我正在使用资源所有者密码凭证流程 有没
  • 显示 PDF ASP.Net MVC

    我的桌面上有一个文件用于测试 我试图在如下视图中显示它 ViewBag Title ShowFile h2 ShowFile h2 我用于控制器的代码是 HttpGet public ActionResult ShowFile string
  • 服务层设计。将事物放入服务层的原因

    我有一些与设计相关的问题 should service layer interfaces居住在一个domain layer 例如user service 将代码部分移动到单独层的主要原因是什么 should service layer居住在
  • Android HTTP-post AsyncHttpClient

    public void postLoginData AsyncHttpClient myClient new AsyncHttpClient RequestParams params1 new RequestParams params1 p
  • 在调试模式下单步执行时跳过方法的属性

    是否有一个属性可以在方法上使用 以便在调试模式下单步执行某些代码时 调试器保持在方法的外部 DebuggerStepThrough docs https learn microsoft com en us dotnet api system
  • 如何使用自定义 ValidationAttribute 来确保两个属性匹配?

    我们使用 xVal 和标准DataAnnotationsValidationRunner描述here http blog stevensanderson com 2009 01 10 xval a validation framework
  • 如何根据 ASP.NET VNEXT MVC6 中给出的路径进行虚拟路由/重定向?

    我有一个网站 它在不同的路径上公开多个 API 每个 API 由特定于应用程序部分的控制器处理 例如example com Api Controller Action param1 stuff 其中控制器发生变化 但操作保持相当一致 我有几
  • AutoMapper.Mapper 不包含 CreateMap 的定义

    这可能是一个基本问题 但想知道我没有得到 AutoMapper Mapper CreateMap 方法 我使用了错误的 AutoMapper 参考 包吗 谢谢 静态版本CreateMap方法在 4 2 中已弃用 然后在版本 5 0 中从 A
  • 如何使用Multipart将图像上传到php服务器

    我一直很头疼 如何将图像上传到服务器 这对我来说是新任务 但对我来说很困惑 我在 stackoverflow 上搜索并用谷歌搜索 但我遇到了问题 我的意图是从 SD 卡上传照片并从相机拍照并上传到服务器 在ios中 这个任务已经完成 在io
  • 使用 AJAX 加载部分视图不起作用

    请原谅我 我是 MVC 和 AJAX 的新手 目前我只是提交一个表单 我想使用表单中的数据使用 ajax 更新部分视图中的表 My UserInfo部分视图如下所示 model IEnumerable
  • 构建 ViewModel 的合适粒度是多少?

    我正在开发一个新项目 在看到以前项目的一些困难后 这些项目没有提供足够的视图与模型的分离 特别是使用 MVC 模型和视图开始有点相互渗透 我想使用 MVVM 我了解基本概念 并且很高兴开始使用它 然而 有一件事我有点忽略 ViewModel
  • 使用实体框架重叠约会

    我将 asp net mvc 与实体框架一起使用 我有一个包含 startat 字段 endat 字段和 roomid 字段 称为 SpaceConfigurationId 的约会列表 并且希望查找给定房间已重复预订的约会列表 可以假设 e
  • 自定义代码访问安全属性

    我创建了以下属性 Serializable AttributeUsage AttributeTargets Class AttributeTargets Method AllowMultiple true Inherited true pu

随机推荐