Html.BeginForm() 在我的控制器上执行错误的操作
Posted
技术标签:
【中文标题】Html.BeginForm() 在我的控制器上执行错误的操作【英文标题】:Html.BeginForm() going to the wrong action on my controller 【发布时间】:2021-11-26 20:49:26 【问题描述】:我有一个使用 html.BeginForm() 构建的 HTML 表单。我指定了我的控制器名称和操作名称,但它没有转到正确的操作。
这是我认为的相关行:
@using (Html.BeginForm("AdminPanelResult", "AdminPanel", FormMethod.Post))
在我的控制器中,我有两种方法。无论我做什么,它总是转到 AdminPanel() 而不是 AdminPanelResult()。
这是 AdminPanel 的样子:
public ActionResult AdminPanel() ...
这是 AdminPanelResult():
[System.Web.Http.HttpPost]
public ActionResult AdminPanelResult(ContentModel model) ...
我的问题,如何让 Html.BeginForm 实际使用正确的操作?
编辑:这里要求的是我的视图形式的其余部分:
<legend>Admin Panel Access</legend>
@using (Html.BeginForm("AdminPanelResult", "AdminPanel", FormMethod.Post))
<fieldset>
<div id="AdminPanelResult"></div>
<ol>
<label for="selOrgName">Choose an Organization Name:</label>
<select name="selOrgName" id="selOrgName">
<option id="0">Select an Org Name</option>
@foreach (var r in data.glOrgName)
<option id="@r.OrgKey" value="@r.OrgName">@r.OrgName</option>
</select>
<label for="apiDrop">Choose the type of Data:</label>
@Html.DropDownList("ApiId", (MultiSelectList)ViewBag.Categories, new multiple = "multiple" )
<li>
@Html.Label("...")
@Html.TextBox("..")
</li>
<!--Several more identical elements removed for brevity-->
</ol>
<p>
<input type="submit" value="Submit" />
</p>
</fieldset>
【问题讨论】:
您的 Startup.cs 文件是什么样的?您是否注册了任何非默认路由? 控制器的名称是什么? 控制器名称为 AdminPanelController。为此,我没有对 Startup.cs 进行任何更改。 【参考方案1】:假设您的控制器名称是“AdminPanel”,如果您需要将表单提交到 AdminPanelResult 操作,请使用此
@using (Html.BeginForm("AdminPanelResult", "AdminPanel", FormMethod.Post))
或者如果您需要将表单提交到 AdminPanel 操作,请使用此
@using (Html.BeginForm("AdminPanel", "AdminPanel", FormMethod.Post))
由于我看不到您的视图,您必须使用提交按钮来提交表单,而不是使用 ancor 标记。 Ancor 标记始终生成一个 get 方法,并且不遵循表单操作。
如果仍然无法正常工作,则必须修复路由。我看不到你的控制器,但这肯定会工作
[HttpPost("~/AdminPanel/AdminPanelResult")]
public ActionResult AdminPanelResult(ContentModel model) ...
【讨论】:
我的控制器的名字是AdminPanelController.cs 请发布您的其余视图,包括您的提交按钮,如果会影响它的提交方式。 行,给我5分钟以上是关于Html.BeginForm() 在我的控制器上执行错误的操作的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Html.Listboxfor 和 Html.Beginform