【问题标题】:Pass selected value in dropdownlist from view to controller将下拉列表中的选定值从视图传递到控制器
【发布时间】:2015-04-29 14:44:42
【问题描述】:

我有一个小问题,我必须将参数从视图传递给控制器​​,我用输入字段成功了,但是用@html.dropdownList我不知道该怎么做,你能请帮帮我,这是我的代码:

查看:

@using (Ajax.BeginForm("GetFilterList", "Inconsistencies",
new AjaxOptions
{
HttpMethod = "POST",
UpdateTargetId = "refreshList",
}, new { @id = "FileList" }
))
{


<span class="input-group-addon">Date de début</span>
<input type="text" class="form-control date-picker" placeholder="jj/mm/aaaa" id="StartDate" name="StartDate" />

<span class="input-group-addon">Date de fin</span>
<input type="text" class="form-control date-picker" placeholder="jj/mm/aaaa" id="EnDate" name="EnDate" />

<span class="input-group-addon">Etat inco</span>
@Html.DropDownListFor(m => m.Inconsistences.InconsistencyStateId, Model.StateList, new { id = "state", }) //how to pass the selected value to controller ?

<span class="input-group-addon">Type inco</span>
<input type="text" class="form-control" id="type" name="type" />


<button type="submit" class="btn btn-sm fsc-btn-1" id="search">
<i class="fa fa-search"></i>
<span>Recherche</span>
</button>


}

控制器:

   [HttpPost]
public ActionResult GetFilterList(DateTime? StartDate, DateTime? EnDate, decimal? State, decimal? type)
{
InconsistenciesModel model = new InconsistenciesModel();

model.FillDDL();
model.GetListFilter(StartDate, EnDate,State, type);
return PartialView("_InconsistenciesList", model);
}

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    只需将 Ajax.BeginForm 简化为

       @using (Ajax.BeginForm("GetFilterList", "Inconsistencies")
        {
            .......    
        }
    

    此搜索按钮的操作会将所有表单值(包括下拉列表的选定值)发布到控制器。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      它可以帮助您了解任何值是如何传递给控制器​​的。

      <form>
        <input name="someValue" type="text" value="test" />
        <button type="submit">Submit</submit>
      </form>
      

      使用标准 application/x-www-form-urlencoded 方案,someValue=test 的值将被发送到服务器。

      可以使用 ASP.net 中的标准请求 API 直接访问该值。

       public ActionResult Test(){
      
            string someValue = Request.Form("someValue");
       }
      

      MVC 框架通过自动绑定 Form 和 Querystring 以及 Route 参数值到 MVC 操作参数来添加一些不错的功能。

       public ActionResult Test(string someValue){
      
       }
      

      该框架还具有绑定到复杂类型的功能 (https://msdn.microsoft.com/en-us/magazine/hh781022.aspx)。

      在您的情况下,m=&gt; m.Inconsistences.InconsistencyStateId 很可能被翻译成名称“Inconsistences_InconsistencyStateId”

       public ActionResult GetFilterList(string Inconsistences_InconsistencyStateId){
      
       }
      
       or 
      
       // MVC will try to convert the value into an integer
       public ActionResult GetFilterList(int Inconsistences_InconsistencyStateId){
      
       }
      
       // MVC will throw an error if the parameter is missing, so you may need to make any ValueType parameters nullable.
       public ActionResult GetFilterList(int? Inconsistences_InconsistencyStateId){
      
       }
      

      或者你可以自动绑定模型

      public class Inconsistences {
       public int InconsistencyStateId {get;set;}
      }
      
      public class InconsistenciesModel {
         public Inconsistences Inconsistences {get;set;}
      }
      
      public ActionResult GetFilterList(InconsistenciesModel model) {
      
          int id = model.Inconsistences.InconsistencyStateId;
      }
      

      【讨论】:

        【解决方案3】:

        请将您的下拉菜单更改为

        @Html.DropDownListFor(m => m.Inconsistences.InconsistencyStateId, Model.StateList, new { name = "state", })
        

        如果m=&gt; m.Inconsistences.InconsistencyStateId 主要被渲染成名称属性“Inconsistences_InconsistencyStateId”,则使用如下 在控制器中。或者请检查您呈现的 html 中的下拉名称属性并相应地更改操作参数。

        public ActionResult GetFilterList(DateTime? StartDate, DateTime? EnDate, decimal? State, int Inconsistences_InconsistencyStateId)
        {
             ...
        }
        

        这会奏效。因为表单发布是基于表单内部的名称值对。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多