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

Bon*_*lin 3 asp.net asp.net-mvc razor

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

@using (Html.BeginForm("Details", "Home", new { name = Model.Name }))
Run Code Online (Sandbox Code Playgroud)

我可以像这样:

@using (Html.BeginForm("Details", "Home", FormMethod.Get))
Run Code Online (Sandbox Code Playgroud)

但我似乎无法做到这两点.我如何能?

更新

以下是有问题的表格的全部内容:

@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>
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Dar*_*rov 8

但我似乎无法做到这两点

你可以做到这两点......你可以使用overload你需要的

例如,如果namerouteValue:

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

如果name是htmlAttribute以下形式之一:

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

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

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