gpt4 book ai didi

c# - 使用 HTML 在 MVC 中提交表单

转载 作者:搜寻专家 更新时间:2023-10-31 23:27:15 24 4
gpt4 key购买 nike

我有一个使用 MVC5 和 C# 的 Web 应用程序。在这个应用程序中,我有一个带有一个下拉列表和一个提交按钮的表单,如下所示:

<form class="form-horizontal" action="@Url.Action("AssignTemplate", "TemplateMapper")" method="post">
<div class="control-group">
<label class="control-label">Template:</label>
<div class="controls">
<select id="template">
@foreach (KeyValuePair<int, string> entry in Model.templates)
{
<option value="@entry.Key">@entry.Value</option>
}
</select>
</div>
</div>
<div class="control-group">
<div class="controls">
<input type="button" class="btn btn-primary" value="Assign" onclick="location.href='@Url.Action("AssignTemplate", "TemplateMapper")'" />
</div>
</div>
</form>

我的目标是在不使用 Razor Html Helper 语法的情况下,向服务器发送一个发布请求,其中包含在下拉列表中选择的信息。

为此,我有以下 Controller 代码:

public class TemplateMapperController : Controller
{
[HttpPost]
public ActionResult AssignTemplate(int templateId)
{
return null;
}
}

但是,当我按下提交按钮时,我得到一个 404,未找到,即使该方法存在并且我在表单中声明它应该是一个 post 请求。

我错过了什么?我的 Controller 如何才能访问下拉列表中的信息?

最佳答案

您目前正在全面使用 Razor 语法:

  • @Url.Action("AssignTemplate", "TemplateMapper")
  • @foreach(Model.templates 中的 KeyValuePair 条目)
  • @entry.Key

但这是你应该做的:

查看:

<form class="form-horizontal" action="../TemplateMapper/AssignTemplate" method="post">
<div class="control-group">
<label class="control-label">Template:</label>
<div class="controls">
<select id="template" name="myDropDownList">
@foreach (KeyValuePair<int, string> entry in Model.templates)
{
<option value="@entry.Key">@entry.Value</option>
}
</select>
</div>
</div>
<div class="control-group">
<div class="controls">
<input type="submit" class="btn btn-primary" value="Assign" />
</div>
</div>
</form>

Controller

public ActionResult AssignTemplate(string myDropDownList)
{
return View();
}

假设您有一个名为 AssignTemplate 的 View

关于c# - 使用 HTML 在 MVC 中提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28050493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com