Controller的Action1调用包含以下HTML代码的视图:
@using(Html.BeginForm("Action2","Controller",new {ID = ViewBag.Link},FormMethod.Post,new {@class =""}))
{
@Html.AntiForgeryToken()
<input type="submit" value= "Submit"/>
}
当用户提交此表单后,调用以下方法:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Action2(int ID)
{
//Something
return View("Display");
}
当显示此“显示”视图时,URL包含:// Controller / Action2?ID = 1
即使在FormMethod为POST后,如何避免此值在URL中可见?
答案 0 :(得分:3)
这种情况正在发生,因为您将ID
作为路线值发送。如果您希望它不在URL之外,而是通过隐藏的输入元素发送它
@using(Html.BeginForm("Action2"))
{
@Html.AntiForgeryToken()
<input type="hidden" name="ID" value="@ViewBag.Link" />
<input type="submit" value= "Submit"/>
}