我有一个表单和两个SQL数据库。表单是向数据库1提交信息,但是当用户在第一个字段中输入信息时,我需要它扫描数据库2中的该数据并从中填充说明。
我目前有一个按钮,它将在控制器中运行脚本以检索此数据。但是,我不知道如何将第一个字段作为参数传递给按钮onclick,因此它将使用它来搜索数据库。
一切都在控制器中工作,但是我不知道如何获取在EditorFor文本字段中键入的信息,并将其作为参数提交给按钮。我曾尝试使用“模型”来执行此操作,但是我对它的工作原理的了解有限。
我的观点:
<div class="form-group">
@Html.LabelFor(model => model.Number, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-4">
@Html.EditorFor(model => model.Number, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Number, "", new { @class = "text-danger" })
</div>
<div class="col-md-1">
<input type="button" value="Search" class="btn btn-default" onclick="location.href='@Url.Action("Search", "Catalog", new { Number = Model.Number })'" ; />
</div>
</div>
我的控制器:
public ActionResult Search(string catNo = "10004361")
{
IFS_Catalog_Products DatabaseScanner = new IFS_Catalog_Products();
string catDesc = "";
if (ModelState.IsValid)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = @"CONNECTION STRING";
con.Open();
SqlCommand cmd = new SqlCommand("SELECT DESCRIPTION FROM TABLE WHERE NUMBER = '" + catNo + "'", con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
catDesc = dr.GetString(0);
//break;
}
con.Close();
}
DatabaseScanner.IFS_Catalog_Desc = catDesc;
DatabaseScanner.IFS_Catalog_No = catNo;
return View("Create", DatabaseScanner);
}
代码可以正确编译,并且除了Model.Number之外,代码的所有其他方面都可以正常工作。Number仅将Null传递给脚本。
我想从EditorFor字段中的model.Number中获取信息,并在语句中使用它。
答案 0 :(得分:0)
您需要使用@Html.ActionLink
助手而不是按钮来实现目标,例如:
@Html.ActionLink("Search", "Search", "Catalog", new { catNo = Model.Number }, new { @class="btn btn-default" })
答案 1 :(得分:0)
我会这样使用POST操作:
您的视图:
@model YOUR_MODEL
@using (Html.BeginForm("Search", "Home", FormMethod.Post))
{
<div class="form-group">
@Html.LabelFor(model => model.Number, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-4">
@Html.EditorFor(model => model.Number, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Number, "", new { @class = "text-danger" })
</div>
<div class="col-md-1">
<input type="button" value="Search" class="btn btn-default"/>
</div>
}
您的模型:
public class YOUR_MODEL
{
public string Number {get;set;}
}
您的控制器
[HttpPost]
public ActionResult Search(YOUR_MODEL model)
{
IFS_Catalog_Products DatabaseScanner = new IFS_Catalog_Products();
string catDesc = "";
if (ModelState.IsValid)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = @"CONNECTION STRING";
con.Open();
SqlCommand cmd = new SqlCommand("SELECT DESCRIPTION FROM TABLE WHERE NUMBER = '" + model.Number+ "'", con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
catDesc = dr.GetString(0);
//break;
}
con.Close();
}
DatabaseScanner.IFS_Catalog_Desc = catDesc;
DatabaseScanner.IFS_Catalog_No = catNo;
return View("Create", DatabaseScanner);
}