使用传统表单参数的属性路由问题
Issue with Attribute Routing working with traditional form parameter
我在 ASP.NET MVC 5 中使用属性路由时遇到问题。这是我在我的控制器中使用的操作:
[HttpGet,Route("Home/ChangeID/{MovieInput}")]
public ActionResult ChangeID(int MovieInput)
{
return View();
}
这是我用来向此操作发送参数的表单:
<form method="get" action="@Url.Action("ChangeID", "Home")">
<label for="movieInput">Change an ID: </label>
<input type="text" id="MovieInput" name="MovieInput" placeholder="Enter Your ID" />
<input type="submit" />
</form>
该路线与 URL 完美配合,例如
/Home/ChangeID/65
但是它不支持表单提交参数输入
/Home/ChangeID?MovieInput=65`.
如何更改表单提交以满足后者,或者有没有办法更改路由以满足以这种方式键入的参数?
`
如果您将路线模板更改为 Route("Home/ChangeID")
//GET /Home/ChangeID?MovieInput=65`
[HttpGet,Route("Home/ChangeID")]
public ActionResult ChangeID(int MovieInput) {
return View();
}
它将用于表单操作或使路由参数可选Route("Home/ChangeID/{MovieInput?}")
(注意?
)
//GET /Home/ChangeID/65`
//GET /Home/ChangeID?MovieInput=65`
[HttpGet,Route("Home/ChangeID/{MovieInput?}")]
public ActionResult ChangeID(int MovieInput) {
return View();
}
应该是一样的效果。
第二个选项相对于第一个选项的优势在于它将允许 /Home/ChangeID/65
和 /Home/ChangeID?MovieInput=65
匹配控制器操作。
我在 ASP.NET MVC 5 中使用属性路由时遇到问题。这是我在我的控制器中使用的操作:
[HttpGet,Route("Home/ChangeID/{MovieInput}")]
public ActionResult ChangeID(int MovieInput)
{
return View();
}
这是我用来向此操作发送参数的表单:
<form method="get" action="@Url.Action("ChangeID", "Home")">
<label for="movieInput">Change an ID: </label>
<input type="text" id="MovieInput" name="MovieInput" placeholder="Enter Your ID" />
<input type="submit" />
</form>
该路线与 URL 完美配合,例如
/Home/ChangeID/65
但是它不支持表单提交参数输入
/Home/ChangeID?MovieInput=65`.
如何更改表单提交以满足后者,或者有没有办法更改路由以满足以这种方式键入的参数? `
如果您将路线模板更改为 Route("Home/ChangeID")
//GET /Home/ChangeID?MovieInput=65`
[HttpGet,Route("Home/ChangeID")]
public ActionResult ChangeID(int MovieInput) {
return View();
}
它将用于表单操作或使路由参数可选Route("Home/ChangeID/{MovieInput?}")
(注意?
)
//GET /Home/ChangeID/65`
//GET /Home/ChangeID?MovieInput=65`
[HttpGet,Route("Home/ChangeID/{MovieInput?}")]
public ActionResult ChangeID(int MovieInput) {
return View();
}
应该是一样的效果。
第二个选项相对于第一个选项的优势在于它将允许 /Home/ChangeID/65
和 /Home/ChangeID?MovieInput=65
匹配控制器操作。