将MVC Html.BeginForm与GET方法和操作参数一起使用

时间:2012-08-13 20:17:13

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

我知道我可以使用Html.BeginForm来使用这样的动作参数进行POST:

@using (Html.BeginForm("Details", "Home", new { name = Model.Name }))

我可以这样说:

@using (Html.BeginForm("Details", "Home", FormMethod.Get))

但我似乎无法做到这两点。我怎么样?

更新

以下是相关表单的全部内容:

@using (Html.BeginForm("Details", "Home", new { name = Model.Name }))
{
    <div style="text-align: center">
        @Html.DropDownList("viewMonth", 
                                  new List<SelectListItem>(ViewBag.MonthNames))
        @Html.TextBox("viewYear", Model.ViewYear, new {style = "width: 30px"})
        <input type="submit" value="Go"/>
        <br/>
        <br/>
    </div>
}

其中viewMonthviewYear是Action / Details中的参数名称。如果我试试

@using (Html.BeginForm("Details", "Home", new { name = Model.Name }, 
                        FormMethod.Get))

它将传递viewMonth和viewYear,但不会传递名称。

1 个答案:

答案 0 :(得分:8)

  

但我似乎无法做到这两点

你可以同时做两件事......你可以使用你需要的overload

例如,如果namerouteValue

@using (Html.BeginForm("Details", "Home", new { name = Model.Name }, 
                        FormMethod.Get))

如果name是表单的htmlAttribute

@using (Html.BeginForm("Details", "Home", FormMethod.Get, 
                        new { name = Model.Name }))

如果你想同时使用routeValues和htmlAttributes:

@using (Html.BeginForm("Details", "Home", new { name = Model.Name }, 
                        FormMethod.Get, new { name = "foo_bar" }))