У меня есть проект MVC, который я унаследовал. В представлениях нет маршрута (контроллера и действия), указанного в теге BeginForm. Представление отображается правильно, поэтому я предполагаю, что он выбирает маршрут по умолчанию.В представлении MVC какой контроллер и метод вызывается, если в теге формы не указано ни одного?
Мой вопрос в том, как он знает, какой маршрут использовать, если он не указан? Что лучше всего здесь: следует ли указать маршрут или оставить его по умолчанию?
Таким образом, точка зрения 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) –
[Это в документации] (https: // MSDN. microsoft.com/en-us/library/dd505244(v=vs.118).aspx). – vcsjones