Asp表示助手无法正确创建路线

时间:2017-06-22 18:11:37

标签: asp.net-mvc forms asp.net-core html-helper

我的.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}中的值不断涌入。有人知道如何实现这一目标吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我在这里找到答案:https://github.com/aspnet/Mvc/issues/6420

我不喜欢它,但答案是故意杀死有问题的变量。就我而言,使用

<form asp-controller="testing" asp-action="MyForm" asp-route-code="" 
                                          asp-route-returnUrl="returnHome">

诀窍。