我的cshtml中有这个HTML代码:
<form method="get" action="@Url.Action("Index")">
@(Html.TextBox("q", Model.Search.FreeSearch))
<input type="submit" value="Search"/>
</form>
如何将此html文本框中的默认文本放入我的控制器。
例如,在开始时,这个文本框是空的,它必须返回到控制器的空值,但是当我输入一些内容时,例如JADA它必须返回到控制器:目的地:“JADA”(目的地将是默认的,这意味着此文本框将仅返回目标列中的值,对于信息而言非常多)。
我的路线:
using System.Web.Mvc;
using System.Web.Routing;
namespace AdminRole
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
从搜索中获取值的控制器:
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();
}
真的感谢您的帮助。
答案 0 :(得分:1)
if(!String.IsNullOrWhiteSpace(Model.Search.FreeSearch))
@(Html.TextBox("q", Model.Search.FreeSearch))
else
@(Html.TextBox("q", Model.Search.FreeSearch, new { Value="Default Text Here"}))
答案 1 :(得分:1)
嗯,实际上你通过提供FreeSearch
已经采取的方式:
@Html.TextBox("q", !string.IsNullOrEmpty(Model.Search.FreeSearch)
? Model.Search.FreeSearch
: "Default"
, new { placeholder = "Placeholder text" }
)
最后一行添加了html属性placeholder
以在后台显示文本。此文本未提交给服务器。
更改路线:
routes.MapRoute(
name: "Search",
url: "Home/Search/{q}",
defaults: new { controller = "Home", action = "Search", q = "Default value" }
);