将输入文本传递给控制器​​mvc

时间:2015-07-04 20:53:20

标签: c# asp.net-mvc model-view-controller input

我的索引页面上有一个团队列表。

我试图将输入文本(类型文本)从索引视图传递回索引控制器,重新加载索引页面,这次只显示列表中具有匹配文本的项目。例如 - bob = bob

索引控制器

  public ActionResult Index(string searchString)        
    {
        ViewBag.Message = "Welcome to ASP.NET MVC!";


        var listOfTeams = from T in db.Teams
                     select T; 

        if (!String.IsNullOrEmpty(searchString))
        {
            listOfTeams = listOfTeams.Where(T => T.TeamName.Contains(searchString));

        }


        return View(listOfTeams.ToList());

    }

我如何尝试在索引视图中传递数据

我已经尝试了

 <input type="text" id="inputTeamSearch" name="searchString" class="form-control" style="width:225px;height:60px" onblur="IsTextEmpty()" oninput="CheckTeams()" placeholder="Search">
@Html.ActionLink("Search", "Index")

@using(Html.BeginForm("Index", "Team"))
 {

<input type="text" id="inputTeamSearch" name="searchString" class="form-control" style="width:225px;height:60px" onblur="IsTextEmpty()" oninput="CheckTeams()" placeholder="Search">
<input type="submit" id="Index" value="Index" />    

Html.EndForm(); 
 } 

我确定这可能是某种形式的重复,如果是这样,请让我按照适当的方向传递给我。我已经找到了答案,但他们要么啰嗦,要么进入比这更复杂的细节。

1 个答案:

答案 0 :(得分:2)

因此,要将数据发布到控制器,您需要使用HttpPost属性修饰的单独后置操作。此方法需要采用模型作为其参数:

[HttpPost]
Public ActionResult Index(IndexVM      model)
{
    var searchTerm = model.SearchTerm;
}

视图模型需要包含您要发布的字段。

Public class IndexVM
{
     Public String SearchTerm { get; set; }
    //Other model examples
    public Int32 PageNumber { get; set; }
    public Int32 NumOfItemsPerPage { get; set; }
}

然后你的html需要包含一个与视图模型中字符串属性同名的文本框。

@Html.TextBoxFor(m => m.SearchTerm)
//And at the top of your html page you will need to include the model
@model Domain.Models.IndexVM

OR

<input type="text" name="SearchTerm">

应该工作。

如果您已经在使用实体模型,则可以创建一个新的View模型,其中包含旧实体和您需要的任何其他内容。所以:

public class IndexVM
{
    public Team Team { get; set; }
    public String SearchTerm { get; set; } 
}

然后在您的索引GET方法中,您将团队传递给您的视图:

var view = new IndexVM();
view.Team = //your team object
return View(view);