如何在MVC C#中将文本框和下拉值从视图传递到控制器

Posted

技术标签:

【中文标题】如何在MVC C#中将文本框和下拉值从视图传递到控制器【英文标题】:How to pass textbox and dropdown value from view to controller in MVC C# 【发布时间】:2020-03-18 04:58:02 【问题描述】:

我想知道如何将值从文本框和选定值传递到控制器。目前我能够到达我的控制器,但是在文本框中输入的值和在下拉列表中选择的值在到达控制器时始终为空,我不知道为什么。也许我应该这样做这使用 ViewData 代替?

我的文本框、下拉菜单和搜索按钮

<div id="cc" class="modal fade" tabindex="-1" role="dialog">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title">Advanced Search</h4>
            </div>
            @using (html.BeginForm("AdvancedFilteredSearch", "FilteredSearch", FormMethod.Get, new  id = "frmAdvancedSearch", @class = "form-horizontal", role = "form" ))
            
            <div class="modal-body">
                <div class="dropdown">
                    <br />
                    <select class="form-control" id="condition" name="condition">
                        <option value="">Select Search Conditions</option>
                        <option value="1">Between</option>
                        <option value="2">Or</option>
                    </select>
                </div>


               <div>
                <i class="fas fa-envelope prefix grey-text"></i>
                <input type="text" id="search" name="search" class="form-control validate" placeholder="Type here">
                </div>

            </div>

            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Clear Filters</button>
                <button type="button" onclick="location.href = '@Url.Action("FilteredSearch", "FilteredSearch")'"class="btn btn-primary">Search</button>
            </div>
            
            </div>
        </div>
    </div>



**My Controller Method**




  public ActionResult AdvancedFilteredSearch(FormCollection collection)
    
        string value = Convert.ToString(collection["search"]);
        string value = Convert.ToString(collection["condition"]);
        return View(db.marketingdbclients_dataTable.Where(a => a.ClientId < 500));

    

【问题讨论】:

【参考方案1】:

以前从未使用过 FormCollection 类。但据我所知,当您提交表单时,您可以简单地执行以下操作:

[HttpPost]
public ActionResult AdvancedFilteredSearch(int condition, string search )
    
        return View(db.marketingdbclients_dataTable.Where(a => a.ClientId < 500));
    

您的变量“条件”和“搜索”应该与您的 HTML 表单元素的 id 相同。并且不要忘记您的方法之前的 HttpPost 属性。

【讨论】:

你也可以创建另一个里面有变量的对象:class FormFilter string condition get;set; string search get;set; 然后使用这个对象作为参数:public ActionResult AdvancedFilteredSearch(FormFilter filter) 之后你可以通过这种方式获取元素的值:filter.condition

以上是关于如何在MVC C#中将文本框和下拉值从视图传递到控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何在iphone中将值从一个标签栏传递到另一个标签栏

如何将数据从剃刀视图传递到 mvc3 中的控制器?

在 mvc JavaScript 中的下拉更改选择上加载列

如何在 C# 中为枚举值添加描述以与 ASP.NET MVC 中的下拉列表一起使用? [复制]

如何在 Codeigniter 中将值从视图传递到模型

将输入值从控制器传递到 MVC 中的视图