C# 如何将视图中的信息作为参数传递给控制器
我有一个表单和两个SQL数据库。表单是将信息提交到数据库1,但当用户在第一个字段中输入信息时,我需要它扫描数据库2以获取此数据并从中填充描述 我目前有一个按钮,它将在控制器中运行脚本来检索此数据。但是,我不知道如何将第一个字段作为参数传递给按钮onclick,因此它将使用它来搜索数据库 所有东西都在控制器中工作,但我不知道如何获取EditorFor文本字段中键入的信息,并将其作为参数提交给按钮。我曾尝试使用“模型”来实现这一点,但我对其工作原理的理解有限 我的看法是:C# 如何将视图中的信息作为参数传递给控制器,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个表单和两个SQL数据库。表单是将信息提交到数据库1,但当用户在第一个字段中输入信息时,我需要它扫描数据库2以获取此数据并从中填充描述 我目前有一个按钮,它将在控制器中运行脚本来检索此数据。但是,我不知道如何将第一个字段作为参数传递给按钮onclick,因此它将使用它来搜索数据库 所有东西都在控制器中工作,但我不知道如何获取EditorFor文本字段中键入的信息,并将其作为参数提交给按钮。我曾尝试使用“模型”来实现这一点,但我对其工作原理的理解有限 我的看法是: <div class
<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>
代码编译正确,除模型外,代码的所有方面都正常工作。Number只会将Null传递到脚本中
我想从EditorFor字段中的model.Number获取信息,并在语句中使用它。您需要使用
@Html.ActionLink
帮助程序而不是按钮来实现目标,如下所示:
@Html.ActionLink("Search", "Search", "Catalog", new { catNo = Model.Number }, new { @class="btn btn-default" })
您需要使用
@Html.ActionLink
帮助程序而不是按钮来实现目标,如下所示:
@Html.ActionLink("Search", "Search", "Catalog", new { catNo = Model.Number }, new { @class="btn btn-default" })
我会像这样使用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>
[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);
}
我会像这样使用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>
[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);
}
您需要使用POST controller方法并让binder自动绑定您的属性检查此链接:如果我在控制器中附加[HttpPost]和绑定[()],我刚刚收到HTTP404错误您需要使用POST controller方法并让binder自动绑定您的属性检查此链接:如果我附加[HttpPost]和绑定[()]在控制器内,我刚刚收到HTTP404错误。我已将我的按钮更改为您提供的语法,但我仍然有相同的问题,参数将空值传递给控制器:(你能在浏览器中检查上面代码生成的HTML吗?它应该包含
catNo
作为QueryString
参数作为:/Catalog/Search?catNo=123
。真的很抱歉,我不太熟悉使用这些函数,我不知道这意味着什么,也不知道怎么做:l EDIT:我在U结尾没有看到任何查询字符串RL运行操作时。如果您使用的是Google Chrome
,您可以检查并查看HTML
正在生成什么。在我的情况下,它正在生成:
。请告诉我您得到了什么。我已将按钮更改为您提供的语法,但仍然存在相同的问题,参数传递了一个空值向控制器发送:(你能在浏览器中检查上面代码生成的HTML吗?它应该包含catNo
作为QueryString
参数作为:/Catalog/Search?catNo=123
。真的很抱歉,我不太熟悉使用这些函数,我不知道这意味着什么,也不知道怎么做:l EDIT:我在U结尾没有看到任何查询字符串RL运行操作时。如果您使用的是Google Chrome
,您可以检查并查看HTML
正在生成什么。在我的情况下,它正在生成:
。请告诉我您得到了什么。