2017-06-22 24 views
0

我在.NET核心MVC項目上遇到了表單助手的問題。我有以下形式:Asp窗體助手不能正確創建路徑

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,表單的動作將是「測試/ MyForm/asdf?returnUrl = returnHome」(所使用的代碼是「asdf」)。

我得到了同樣的結果,不管我是否包含asp-controller件。

如果我使用<form asp-route="MyForm">然後表單的動作也只是空白,<form action method="post">

我需要的是行動,是「測試/ MyForm的?RETURNURL = returnHome」但是從我{代碼}值保持在爬行有誰知道如何做到這一點?

謝謝!

回答

0

我找到了答案在這裏:https://github.com/aspnet/Mvc/issues/6420

我不喜歡它,但得到的答覆是故意殺人有關的變量。在我這裏的情況下,使用

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

有竅門。