加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ASP.NET MVC – 具有来自URL的附加参数的POST操作方法

发布时间:2020-12-15 06:36:56 所属栏目:百科 来源:网络整理
导读:使用ASP.net MVC可以将表单POST到一个控制器操作,其中包括不是表单中的参数,而是从URL? 例如 GroupController中的Action方法: [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(int idOne,int idTwo,Model model) { ... } 路线: "{controller}/
使用ASP.net MVC可以将表单POST到一个控制器操作,其中包括不是表单中的参数,而是从URL?

例如

GroupController中的Action方法:

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(int idOne,int idTwo,Model model)
    { ... }

路线:

"{controller}/{action}/{idOne}/{idTwo}"

发布网址:

/Employee/Show/1/42

在此示例中,窗体正在发布到不同的控制器,模型具有正确的值,但其他参数的默认值为0.

我期待的行为是ModelBinder会看到我有两个匹配给定路由的参数,并以与GET操作相同的方式为参数分配当前值1和42.

这个行为是不是支持,还是我错过了什么?

编辑:
要清楚,控制器Employee的显示视图上的窗体包含一个表单,该窗体发布到不同的控制器.我们可以称之为集团.

表单操作网址如下所示

/Groups/Create/0/0

表格声明如下

Html.BeginForm("Create","Groups")

在为Html.BeginForm尝试了许多不同的重载之后,我发现只有当窗体操作URL与浏览器地址栏中的当前URL匹配时,才会映射这些参数.

所以如果我导航到URL /组/创建/ 1/42我会有一个新的表单.如果我提交表单,URL路由值将传递到POST操作.

解决方法

如果我正确理解你的问题,你希望渲染的< form>元素指向包含路线值的网址.使用HtmlHelper.BeginForm()扩展方法的一个重载应该是可能的:
Html.BeginForm("action","controller",new { idOne=1,idTwo=2 },FormMethod.Post);

让我知道如果我有你的问题都错了:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读