尝试创建一个下拉列表和文本框,将列表项设置为数据,将文本框设置为值-asp.net mvc 4
本文关键字:设置 文本 数据 创建 -asp mvc net 列表 下拉列表 一个 | 更新日期: 2023-09-27 17:58:08
我正在尝试创建一个基于服务器名称或打印机名称进行搜索的搜索表单。这是我的控制器的片段:
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem { Text = "Server Name", Value = "ServerName" });
items.Add(new SelectListItem { Text = "Printer Name", Value = "PrinterName" });
ViewData["newlist"] = items;
以下是我的观点(我知道这是错误的,因为它不起作用):
@using (Html.BeginForm("search", "PrintQueues", FormMethod.Get))
{
<fieldset>
<legend>
Search
</legend>
@Html.DropDownList("newlist",ViewData["newlist"] as SelectList)
@Html.TextBox("newlist")
<p>
<input type="submit" value="Submit" />
</p>
</fieldset>
}
如果我选择"服务器名称"并在文本框中输入一个值(例如"myservernaem"),我希望url显示:
/search?ServerName=myservername
我确信我的控制器和视图都不正确。
不太喜欢这种方法。。。Http通过向控制器发送每个input
的值来工作。根据您在控制器中收到的值,您应该能够返回适当的页面和信息。
因此,如果您将下拉列表重新命名为searchType,将文本框重新命名为searchCriteria时,您会得到一个很好的查询字符串,如:/Search?searchType=Printer&searchCriteria=epson
。在控制器中,您应该能够接收这些信息并返回相应的页面(无论是打印机还是服务器)。
public ActionResult Search(string searchType, string searchCriteria)
{
if(searchType == "PrinterName")
{
// search your printers using searchCriteria and return appropriate View
}
else if(searchType == "ServerName")
{
// search your servers using searchCriteria and return appropriate View
}
}
如果你采用这种方法,你可以创建一个名为SearchType的enum
,并使用它来代替string
,这将允许你做:if(searchType == SearchType.Printer)
。。。
如果你想采用你的方法,当你尝试搜索并附加一个URL:时,你可以从你的输入中获得值
@Html.DropDownList("searchType",ViewData["newlist"] as SelectList)
@Html.TextBox("searchCriteria")
<button type="button" onclick="GoToSearch();">Search</button>
function Search() {
// assumption of jquery (use document.getElementById otherwise...)
var type = $('#searchType').val();
var searchCriteria = $('#searchCriteria').val();
window.location = '@Url.Action("Search", "PrintQueues")' + '?' + type + '=' + searchCriteria;
}
很乐意回答任何问题。