使用 HTML 在 MVC 中提交表单

2024-02-21

我有一个使用 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 语法的情况下向包含下拉列表中所选信息的服务器发送发布请求。

为了实现这一点,我有以下控制器代码:

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

但是,当我按下提交按钮时,我收到 404,未找到,即使该方法存在并且我以形式声明它应该是post要求。

我缺少什么?我的控制器如何访问下拉列表中的信息?


您当前正在使用 Razor 语法:

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

但这是你应该做的:

View:

<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>

控制器

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

假设你有一个名为AssignTemplate

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

使用 HTML 在 MVC 中提交表单 的相关文章

随机推荐