如何在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">×</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#中将文本框和下拉值从视图传递到控制器的主要内容,如果未能解决你的问题,请参考以下文章