如何从视图中获取控制器的动作参数

时间:2014-08-18 16:22:02

标签: c# html asp.net-mvc-4

我在asp.net mvc应用程序

中有一个控制器操作
 public ActionResult ForFahrzeug(DateTime? initDate = null, DateTime? finalDate = null, long id = 0, long days = 0, string ExpGnr = "")
    {
        //body
    }

我在以下视图中调用上述方法

 @using (Html.BeginForm("ForFahrzeug", "Messungen", FormMethod.Get))
{     

      <P>Fahrten von:
      @Html.TextBox("initDate", "", new { style = "width:15%", @class = "datefield" })  bis: 
      @Html.TextBox("finalDate", "", new { style = "width:15%", @class = "datefield" }) 

     <input type="submit" value="Filter" /> </p> 
} 

我想从视图中获取“ExpGnr”的值。我怎么能这样做?我尝试像下面这样做,但它不起作用。

@using (Html.BeginForm("ForFahrzeug", "Messungen", FormMethod.Get, new { ExpGnr = "Smart_ED"}))
{     
     Fahrten von:
      @Html.TextBox("initDate", "", new { style = "width:15%", @class = "datefield" })  bis: 
      @Html.TextBox("finalDate", "", new { style = "width:15%", @class = "datefield" }) 

     <input type="submit" value="Filter" /> </p> 
} 

2 个答案:

答案 0 :(得分:1)

我想我理解你的问题。好像你选择了方法@ Html.BeginForm()的错误重载。 你应该写这样的东西:

@using (Html.BeginForm("ForFahrzeug", "Messungen", new { ExpGnr = "Smart_ED"},FormMethod.Get))

始终选择正确的overload of MVC extensions或使用VisualStudio帮助消息。

看,您通过GET方法提交表单的重要原因是什么?在大多数情况下,应使用POST请求提交表单。

而且,我想你需要为你使用一些ViewModel Form。基于ViewModel的解决方案对于MVC来说更加清晰,可扩展且传统。 您还可以在ViewModel中添加ExpGnr属性,并通过@Html.HiddenFor(x => x.ExpGnr)将其传递给控制器 此外,this主题对您有用。

<强>更新

确定。这将有效:

@using (Html.BeginForm("ForFahrzeug", "Messungen", FormMethod.Get))
{     
      @Html.Hidden("ExpGnr","Smart_ED")
      @Html.TextBox("initDate", "", new { style = "width:15%", @class = "datefield" })
      @Html.TextBox("finalDate", "", new { style = "width:15%", @class = "datefield" }) 
     <input type="submit" value="Filter" /> 
}

谢谢)

答案 1 :(得分:0)

如果我理解正确,您想要将一些数据从操作传递到视图。您应该使用ViewBag来实现此目的。