尝试从index.cshtml文件中的控制器上调用方法。
Html.BeginForm("Index", "Default", FormMethod.Get);
其中index是我的方法名称,默认是控制器,而get是不言自明的。当我右键单击“索引”并转到实现时,它将带我到控制器中的方法。但是,当我调试代码时,尽管断点显然已经到位并且调试工具选项已正确设置,但它不会进入Controller方法并转到下一行代码。
也尝试过
<form method="get" action='@Url.Action("Index", "Default")'></form>
同样无法进入控制器。
如何正确调用控制器方法?
答案 0 :(得分:1)
表格
HTML <form>
需要一个提交按钮(通常是一些控件)才能调用控制器动作。您的示例中的表单似乎为空。
您尚未显示控制器,但假设您想将字符串传递给控制器操作,也许是要进行搜索或过滤:
public ActionResult Index(string searchTerm)
{
// do something with parameters then return view
return View();
}
您认为不是这样:
Html.BeginForm("Index", "Default", FormMethod.Get); // empty form
应该是这样的:
@Html.BeginForm("Index", "Default", FormMethod.Get)
{
// add controls here, what parameters are you passing?
@Html.TextBox("SearchTerm")
<input type="submit" value="Search" />
}
标记助手
由于您使用的是ASP.Net-Core,因此可以利用标记帮助器,该标记允许您以更类似于HTML的方式编写代码。我鼓励您阅读Tag Helpers in forms in ASP.NET Core。可以使用标签帮助程序编写以上内容的一种方法是:
<form asp-action="Index" asp-controller="Default" method="get">
<input type="text" name="SearchTerm" />
<button>Search</button>
</form>
ActionLink
也许您想创建一个指向Default/Index
的超链接?在这种情况下,请使用@Html.ActionLink
帮助器:
@Html.ActionLink("go to this link", "Index", "Default")
将创建常规锚点<a>
:
<a href="/Default">go to this link</a>
标记帮助程序版本
<a asp-action="Index" asp-controller="Default" >Click this link</a>
答案 1 :(得分:0)
加载index.cshtml时,它将默认进入索引动作。您需要在索引动作中返回模型。
这是一个简单的演示,如下所示:
1。型号:
public class Test
{
public int ID { get; set; }
public string Title { get; set; }
}
2.Index.cshtml:
@model IEnumerable<TestModel>
<h1>Index</h1>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
</tr>
}
</tbody>
</table>
3。索引操作:
public class TestModelsController : Controller
{
private readonly MyDbContext _context;
public TestModelsController(MyDbContext context)
{
_context = context;
}
// GET: TestModels
public async Task<IActionResult> Index()
{
var model = await _context.TestModel.ToListAsync();
return View(model);
}
}