我的.net Core MVC项目中的表单助手遇到了一些问题。我有以下表格:
MyForm.cshtml
<div id="myDiv" class="row">
<br />
<form asp-controller="testing" asp-action="MyForm" asp-route-returnUrl="returnHome">
<input type="text" asp-for="Name" name="Name" />
<button type="submit">Submit</button>
</form>
以及我在TestingController.cs中的操作
[HttpGet, Route("testing/MyForm/{code}")]
public IActionResult MyForm(string code)
{
return View();
}
[HttpPost]
public IActionResult MyForm(FormVM request)
{
// do stuff
// return some view
return View();
}
这里的想法是用户使用某种代码登陆MyForm页面(通常是GUID,但其他字符串也是可能的)。然后他们填写表格并提交。我遇到的问题是表单的帮助程序没有正确地构建表单的操作(或者至少不是它应该在这里表达的方式https://docs.microsoft.com/en-us/aspnet/core/mvc/views/working-with-forms)。
如果我使用上面的代码并检查html,表单的操作将是“testing / MyForm / asdf?returnUrl = returnHome”(使用的代码是“asdf”)。
无论是否包含asp-controller
篇,我都会得到相同的结果。
如果我使用<form asp-route="MyForm">
,则表单的操作将为空白<form action method="post">
我需要的是“测试/ MyForm?returnUrl = returnHome”,但是我的{code}中的值不断涌入。有人知道如何实现这一目标吗?
谢谢!
答案 0 :(得分:0)
我在这里找到答案:https://github.com/aspnet/Mvc/issues/6420
我不喜欢它,但答案是故意杀死有问题的变量。就我而言,使用
<form asp-controller="testing" asp-action="MyForm" asp-route-code=""
asp-route-returnUrl="returnHome">
诀窍。