我有一个使用 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(使用前将#替换为@)