MVC中Html默认隐藏文本

MVC中Html默认隐藏文本,html,asp.net-mvc,textbox,Html,Asp.net Mvc,Textbox,我的cshtml中有以下HTML代码: <form method="get" action="@Url.Action("Index")"> @(Html.TextBox("q", Model.Search.FreeSearch)) <input type="submit" value="Search"/> </form> 从搜索中获取值的控制器: public ISolrQuery BuildQuery(SearchParameters param

我的cshtml中有以下HTML代码:

<form method="get" action="@Url.Action("Index")">
  @(Html.TextBox("q", Model.Search.FreeSearch))
  <input type="submit" value="Search"/>
</form>
从搜索中获取值的控制器:

 public ISolrQuery BuildQuery(SearchParameters parameters)
        {
            if (!string.IsNullOrEmpty(parameters.FreeSearch))
                return new SolrQuery(parameters.FreeSearch);
            return SolrQuery.All;
        }

        public SortOrder[] GetSelectedSort(SearchParameters parameters)
        {
           return new[] { SortOrder.Parse(parameters.Sort) }.Where(o => o != null).ToArray();
        }
非常感谢您的帮助。

您可以这样做:

if(!String.IsNullOrWhiteSpace(Model.Search.FreeSearch))
    @(Html.TextBox("q", Model.Search.FreeSearch))
else
   @(Html.TextBox("q", Model.Search.FreeSearch, new { Value="Default Text Here"}))

事实上,您已经提供了
FreeSearch

@Html.TextBox("q", !string.IsNullOrEmpty(Model.Search.FreeSearch)
                   ? Model.Search.FreeSearch
                   : "Default"
                 , new { placeholder = "Placeholder text" }
              )
最后一行添加html属性
占位符
,以在背景中显示文本。此文本不会提交到服务器

更改路线:

routes.MapRoute(
    name: "Search",
    url: "Home/Search/{q}",
    defaults: new { controller = "Home", action = "Search", q = "Default value" }
    );

Op想设置文本框的默认文本“这里的默认文本”必须隐藏,因为用户可以删除它,它必须始终存在。然后可以使用隐藏字段..但这没有意义
routes.MapRoute(
    name: "Search",
    url: "Home/Search/{q}",
    defaults: new { controller = "Home", action = "Search", q = "Default value" }
    );