【问题标题】:Returning Form values to post action in MVC返回表单值以在 MVC 中发布操作
【发布时间】:2014-11-19 17:57:26
【问题描述】:

我有一个没有模型的视图。在设计时,它有 2 个带有值的下拉列表。以下是我的查看代码:

    if (string.Equals("Home", @ViewContext.RouteData.Values["Controller"].ToString()))
    {
        using (Html.BeginForm("Submit","Home",FormMethod.Post,new {@class="firstform"}))
    {


            <div class="field vert">
                <select>                        
                    <option>Home</option>
                    <option>Health</option>
                </select>
            </div>
            <div class="field vert">
                <select>                       
                    <option>Education</option>
                    <option>Designation</option>
                </select>
            </div>



              <input type="submit" class="btn" value="Get Now"/>

}

    } 

我的操作如下:

[HttpPost]
        public ActionResult Submit(FormCollection f)
        {
            return View();
        }

在行动中我找不到表单值,请您指导我应该做什么或我缺少什么来获取 Submit 行动中的值。

我正在设置断点并检查表单集合什么都没有。请帮忙

【问题讨论】:

  • 您需要为您的控件提供name 属性,例如&lt;select name="abc"&gt;...。但是为什么不直接使用视图模型并利用 MVC 的模型绑定功能呢?
  • @StephenMuecke 这些只是静态的下拉列表。不要指望他们会改变。你还推荐使用模型绑定吗?
  • 就我个人而言,我会使用视图模型来获得使用强类型 html 助手、模型绑定和未来灵活性的好处,但这是一个简单的案例,所以我把它留给你。

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


【解决方案1】:

MVC 中的默认绑定是 name attribute 所以只要给你的选择标签名称属性,如图所示:

 <div class="field vert">
     <select name="a">                        
         <option>Home</option>
         <option>Health</option>
     </select>
 </div>
 <div class="field vert">
      <select name="b">                       
         <option>Education</option>
         <option>Designation</option>
      </select>
  </div>

并借助后控制器的名称属性获取选定的下拉值。

【讨论】:

  • @user576510..我不认为这是一个硬性规定,如果你有一个静态的简单下拉列表,你应该使用强类型下拉列表,那么你就在正确的方式上,只需选择一个名称和在后控制器上获取其值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
  • 2016-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多