在表单上POST值显示在URL

时间:2015-08-16 18:27:53

标签: asp.net asp.net-mvc asp.net-mvc-4

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中可见?

1 个答案:

答案 0 :(得分:3)

这种情况正在发生,因为您将ID作为路线值发送。如果您希望它不在URL之外,而是通过隐藏的输入元素发送它

@using(Html.BeginForm("Action2"))
{
    @Html.AntiForgeryToken()
    <input type="hidden" name="ID" value="@ViewBag.Link" />
    <input type="submit" value= "Submit"/> 
}