如何从方法POST [ASP.NET MVC]中检索url参数

时间:2012-01-21 08:58:45

标签: asp.net-mvc

我实施了两项行动:

它在URL中使用消费者ID呈现地址视图的第一个操作:

这是网址http://localhost:90/Consumer/Address?id=18755

[HttpGet]
public ActionResult Address(int id)
{
return View();
}

它发布地址表格的第二个动作:

 [HttpPost]
public ActionResult Address(FormCollection value)
{
  int id = Convert.ToInt32(Request["id"]);
  // Some code ... 
  return View();
}

当我解除保存操作时,我发现ID为null,我想从Get操作中检索conusmer ID?

1 个答案:

答案 0 :(得分:0)

  

我想从Get操作中检索conusmer ID?

您无法从GET操作中检索它,因为您现在正在执行POST操作。因此,如果您希望能够检索它,则必须发布此参数。

因此,例如,如果我们假设您的GET操作呈现了包含将用于POST的<form>的视图,则可以将id作为隐藏字段包含在此表单中。这样,当提交表单时,它将被发送到第二个操作:

@using (Html.BeginForm())
{
    @Html.Hidden("id", Request["id"])

    ... some other input fields
    <button type="submit">OK</button>
}

同样在您的POST操作中,而不是进行一些手动类型转换,只需使用默认的模型绑定器为您执行此操作。定义视图模型:

public class MyViewModel
{
    public int Id { get; set; }

    ... some other properties
}

然后让你的POST操作将此视图模型作为操作参数:

[HttpPost]
public ActionResult Address(MyViewModel model)
{
    int id = model.Id;
    // Some code ... 

    return View();
}