【发布时间】:2026-02-14 09:35:02
【问题描述】:
我有一个我继承的 MVC 项目。在视图中,BeginForm 标记中没有指定路由(控制器和操作)。视图正确呈现,所以我认为它正在选择默认路由。
我的问题是,如果未指定路线,它如何知道使用哪条路线?这里的最佳做法是什么:您应该指定路由还是让它默认?
所以视图是 Views/Config/WorkCodes.cshtml 而标签是
Html.BeginForm()
它转到控制器 ConfigController.cs 并调用操作 WorkCodes()。如果我在做这个项目,我会写
Html.BeginForm("WorkCodes", "Config", FormMethod.Post)
MVC 如何知道不指定使用哪个控制器和动作?
WorkCodes.cshtml
@{
ViewBag.Title = "Work Codes";
}
@using (Html.BeginForm())
{
<div>
<table style="width: 100%;" class="trHoverHighlight">
<tbody>
<tr>
<td>
<br />
<div>
<button id="buttonCreateNew" type="button">Add New</button>
<button id="buttonReturn" type="button">Return</button>
</div>
</td>
</tr>
</tbody>
</table>
</div>
}
ConfigController.cs
public ActionResult WorkCodes()
{
return View(Rep.GetWorkAll(true));
}
这里是在另一个视图中调用视图的地方:
@foreach (var itm in (List<string>)ViewBag.ListObjects)
{
<li>
<a href="../Config/@itm">Work Codes</a>
</li>
}
【问题讨论】:
-
默认的
FormMethod是FormMethod.Post,默认的控制器和动作名称是生成视图的名称(通过GET方法)
标签: asp.net-mvc asp.net-mvc-4 razor html-helper