首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >表单收集问题

表单收集问题
EN

Stack Overflow用户
提问于 2014-02-13 13:47:46
回答 3查看 1K关注 0票数 0

我有一个mvc格式的html开始表单。

代码语言:javascript
复制
@using (Html.BeginForm("Search", "Reports",FormMethod.Post, new { enctype = "multipart/form-data", @class = "form-inline"  }))
{ 
   <div class="form-group">
        <input type="text" class="form-control input-sm" placeholder="Value" name="SearchValue">
        <input type="text" class="form-control input-sm second-value" placeholder="Value" style="display:none;" name="SearchValue1">
        <button type="button" class="btn btn-default btn-Add">+</button>

    </div>
    <div id="othersearch"></div>
    <input type="submit" value="Search" class="btn btn-primary" />
}

我想在一个控制器中发布此表单项

代码语言:javascript
复制
public ActionResult Search(FormCollection collection)
{
    string searchvalue = collection.Get("SearchValue");
    return View();
}

我的问题是有时第二个文本框是不可见的。当我按下add按钮时,我不想收集values.And,在具有相同名称的表单中生成相同类型的输入框(我可以添加许多输入框)。那么我如何在我的控制器中收集所有这些。请帮帮我..

EN

回答 3

Stack Overflow用户

发布于 2014-02-13 14:12:07

您可以在大小写中包含具有相同名称"SeachValue“的所有文本框。

string searchvalue = collection.Get("SearchValue");

这将以逗号分隔字符串的形式返回所有文本框值,您可以将其拆分并进一步使用。

查看屏幕截图

这个html

和结果

票数 5
EN

Stack Overflow用户

发布于 2014-02-13 18:13:21

您可以使用以下代码获取所有同名文本框的值:

代码语言:javascript
复制
    var results = ((String[])formcollection.GetValue("mytxt").RawValue).ToList();
            foreach (var item in results)
            {
                //string name = item;
            }
票数 0
EN

Stack Overflow用户

发布于 2014-02-14 21:17:04

当您动态添加元素时,请确保还为其设置了名称。因此,当您添加新的输入元素时,它必须是

代码语言:javascript
复制
 <input type="text" name="NewTextBox" class="form-control input-sm" placeholder="Value" name="searchvalue">

这样,无论你添加多少个文本框,所有的文本框都将具有相同的名称。一旦你张贴了表格。在您的控制器中执行此操作。

代码语言:javascript
复制
[HTTPPOST]
public ActionResult Search(MyModel newModel,string[] NewTextBox)
{
 // here as you had dynamic textbox with name = NewTextBox you 
 //will get all its value binded to the above string[]

}

您可以使用Request.form["NewTextBox"] as检索它们

代码语言:javascript
复制
[HTTPPOST]
public ActionResult Search(MyModel newModel) 
{ 
 var values = Request.Form[NewTextBox];    
}

但我建议您使用第一种方法,即使用MVC Model Binder来处理所有事情。您将只需要处理一组值。

注意:总是确保你的名字是正确的,并且在使用MVC时使用正确的名字。因为所有的绑定都依赖于命名本身。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21746218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档