仅具有表单 Id 的 Html.BeginForm() 未生成正确的操作 url

2024-01-08

我只想在其中添加 formIdbeginForm()

如果我尝试使用
Html.BeginForm(null, null, FormMethod.Post, new {@id="Id"})

那么生成的Html是
<form action="/newquestion/payment/b9f88f80-f31f-4144-9066-55384c9f1cfc" ... >

我不知道该操作网址是如何生成的,所以我尝试了,
Html.BeginForm(new {@id="Id"})
但操作网址看起来像这样
<form action="/newquestion/payment/Id... >

在这两种情况下,操作 url 都不是它应该的样子,并且没有命中控制器的后操作。


当您尝试生成路线时,例如使用BeginForm,MVC会尽力包含你可能需要的东西。

如果你在domain.com/Home/Index/b9f88f80-f31f-4144-9066-55384c9f1cfc并且您使用您提供的代码,然后将使用找到的操作、控制器和路由值生成表单。

controller / action / id
/Home      / Index  / b9f88f80-f31f-4144-9066-55384c9f1cfc

解决这个问题的一种方法是强制id什么都没有(例如空字符串)。

Observe:

@using (Html.BeginForm(null, null, new { @id = string.Empty },
    FormMethod.Post, new { @id = "Id" }))
{

}

The new { @id = string.Empty }是表示路由值的匿名对象。

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

仅具有表单 Id 的 Html.BeginForm() 未生成正确的操作 url 的相关文章

随机推荐