Asp.net mvc 在MVC视图中,如果表单标记中未指定任何控制器和方法,则调用哪个控制器和方法?
我继承了一个MVC项目。在视图上,BeginForm标记中没有指定路由(控制器和操作)。视图渲染正确,因此我假设它正在选择默认路线 我的问题是,如果没有指定路线,它如何知道使用哪条路线?这里的最佳实践是什么:应该指定路由还是让它默认 因此,视图是Views/Config/WorkCodes.cshtml,标记是Asp.net mvc 在MVC视图中,如果表单标记中未指定任何控制器和方法,则调用哪个控制器和方法?,asp.net-mvc,asp.net-mvc-4,razor,html-helper,Asp.net Mvc,Asp.net Mvc 4,Razor,Html Helper,我继承了一个MVC项目。在视图上,BeginForm标记中没有指定路由(控制器和操作)。视图渲染正确,因此我假设它正在选择默认路线 我的问题是,如果没有指定路线,它如何知道使用哪条路线?这里的最佳实践是什么:应该指定路由还是让它默认 因此,视图是Views/Config/WorkCodes.cshtml,标记是 Html.BeginForm() 它转到控制器ConfigController.cs并调用操作工作代码()。如果我在做这个项目,我会写 Html.BeginForm("WorkCode
Html.BeginForm()
它转到控制器ConfigController.cs并调用操作工作代码()。如果我在做这个项目,我会写
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>
以下是在另一个视图中调用视图的位置:
@foreach (var itm in (List<string>)ViewBag.ListObjects)
{
<li>
<a href="../Config/@itm">Work Codes</a>
</li>
}
@foreach(列表)ViewBag.ListObjects中的变量itm)
{
}
视图是通过执行HTTP GET
到WorkCodes
控制器操作生成的,因此默认情况下,在该视图中生成的表单对同名控制器操作执行HTTP POST
BeginForm(HtmlHelper)将开始标记写入响应。
表单使用POST方法,请求由
视图的操作方法
默认的
FormMethod
是FormMethod.Post
,默认的控制器和操作名称是(从GET方法)生成视图的名称。那么,这方面的最佳实践是什么?指定路由还是不指定路由?不指定值意味着代码更少,也意味着在键入动作和控制器名称的魔法字符串时不能输入错误。如果您不是在已映射到视图的默认位置(controller\action)之外的某个位置进行路由,通常不会指定。有时,您可能希望在给定的post上路由到不同的控制器/操作,此时,可以专门添加路由。
@foreach (var itm in (List<string>)ViewBag.ListObjects)
{
<li>
<a href="../Config/@itm">Work Codes</a>
</li>
}