C# sql查询中输入标记的ASP.NET MVC值
我想使用一个输入标记来过滤我的表,比如:“SELECT*FROM tblaccount WHERE accountNo='document.getElementById('txtSearch').value'” 这是我的账户VIEWMODELC# sql查询中输入标记的ASP.NET MVC值,c#,sql,asp.net-mvc,C#,Sql,Asp.net Mvc,我想使用一个输入标记来过滤我的表,比如:“SELECT*FROM tblaccount WHERE accountNo='document.getElementById('txtSearch').value'” 这是我的账户VIEWMODEL namespace MyProject.Models { public class AccountsViewModel { public DataTable Accounts { get; set; } } } 选择model.cs namesp
namespace MyProject.Models
{
public class AccountsViewModel
{
public DataTable Accounts { get; set; }
}
}
选择model.cs
namespace MyProject.Models
{
public class SelectModel
{
private static SqlConnection GetCn()
{
SqlConnection cn = new SqlConnection(@"MyConnectionString");
return cn;
}
public DataSet GetAccounts()
{
SqlConnection cn = GetCn();
SqlCommand cmd = new SqlCommand("SELECT * FROM tblaccount ORDER BY accountNo ASC", cn);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds;
}
}
}
namespace MyProject.Models
{
public class SelectModel
{
private static SqlConnection GetCn()
{
SqlConnection cn = new SqlConnection(@"MyConnectionString");
return cn;
}
public string SearchText { get; set; }
public DataSet GetAccounts()
{
SqlConnection cn = GetCn();
SqlCommand cmd;
if (!string.IsNullOrEmpty(this.SearchText))
{
var sqlQuery = "SELECT * FROM tblaccount WHERE accountNo = @accountNo ORDER BY accountNo ASC";
cmd = new SqlCommand(sqlQuery, cn);
cmd.Parameters.Add(new SqlParameter("accountNo", SqlDbType.NVarChar);
cmd.Parameters[0].Value = this.SearchText;
}
else
{
cmd = new SqlCommand("SELECT * FROM tblaccount ORDER BY accountNo ASC", cn);
}
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds;
}
}
}
HomeController.cs
namespace MyProject.Controllers
{
public class HomeController : Controller
{
public ActionResult Index(MyProject.Models.SelectModel selectmodel)
{
AccountViewModel vm = new AccountViewModel();
DataSet ds = selectmodel.GetAccounts();
vm.Accounts = ds.Tables[0];
return View(vm);
}
}
}
Index.chtml
@model MyProject.Models.AccountsViewModel
<label for="txtSearch">Search: </label>
<input type="text" class="form-control" id="txtSearch">
<button class="btn btn-default" type="submit" id="btnSearch">Search</button>
<table class="table">
<thead>
<tr>
<th>ID</th>
<th">Account Number</th>
<th">Transaction Date</th>
</tr>
</thead>
<tbody>
@foreach (System.Data.DataRow dr in Model.Accounts.Rows)
{
<tr>
<td>@dr["Id"].ToString()</td>
<td>@dr["accountNo"].ToString()</td>
<td>@dr["dateTrans"].ToString()</td>
</tr>}
</tbody>
</table>
@model MyProject.Models.AccountsViewModel
搜索:
搜寻
身份证件
交易日期
@foreach(Model.Accounts.Rows中的System.Data.DataRow dr)
{
@dr[“Id”].ToString()
@dr[“accountNo”].ToString()
@dr[“dateTrans”].ToString()
}
我们主要有两种方法来获得此输出
方式1:使用表单标记-最简单
第一步,将搜索框放在表单标记内,并提供文本框的名称,如下所示:
@model MyProject.Models.AccountsViewModel
@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{
<label for="txtSearch">Search: </label>
<input type="text" class="form-control" id="txtSearch" name="txtSearchterm">
}
<table class="table">
<thead>
<tr>
<th>ID</th>
<th">Account Number</th>
<th">Transaction Date</th>
</tr>
</thead>
<tbody>
@foreach (System.Data.DataRow dr in Model.Accounts.Rows)
{
<tr>
<td>@dr["Id"].ToString()</td>
<td>@dr["accountNo"].ToString()</td>
<td>@dr["dateTrans"].ToString()</td>
</tr>}
</tbody>
</table>
选择型号。cs:
public ActionResult Index(MyProject.Models.SelectModel selectmodel,string txtSearchterm) //when you click submit button here you will get the value
{
AccountViewModel vm = new AccountViewModel();
//updated
DataSet ds = selectmodel.GetAccounts(txtSearchterm);
vm.Accounts = ds.Tables[0];
return View(vm);
}
namespace MyProject.Models
{
public class SelectModel
{
private static SqlConnection GetCn()
{
SqlConnection cn = new SqlConnection(@"MyConnectionString");
return cn;
}
//updated
public DataSet GetAccounts(string txtSearchterm)
{
SqlConnection cn = GetCn();
string sqlquery = "";
if(txtsearchterm != null)
{
sqlquery ="SELECT * FROM tblaccount WHERE accountNo =
'"+txtSearchterm+"'ORDER BY accountNo ASC""
}
else
{
sqlquery ="SELECT * FROM tblaccount ORDER BY accountNo ASC""
}
SqlCommand cmd = new SqlCommand(sqlquery , cn);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds;
}
}
}
Msdn:
方式2:使用jquery
因为有很多好文章,我不想重复了。这里是这些文章的链接
希望以上信息会有用
谢谢
Karthik您需要在
SelectModel
类中创建一个新属性。然后使用它,根据需要过滤数据
选择model.cs
namespace MyProject.Models
{
public class SelectModel
{
private static SqlConnection GetCn()
{
SqlConnection cn = new SqlConnection(@"MyConnectionString");
return cn;
}
public DataSet GetAccounts()
{
SqlConnection cn = GetCn();
SqlCommand cmd = new SqlCommand("SELECT * FROM tblaccount ORDER BY accountNo ASC", cn);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds;
}
}
}
namespace MyProject.Models
{
public class SelectModel
{
private static SqlConnection GetCn()
{
SqlConnection cn = new SqlConnection(@"MyConnectionString");
return cn;
}
public string SearchText { get; set; }
public DataSet GetAccounts()
{
SqlConnection cn = GetCn();
SqlCommand cmd;
if (!string.IsNullOrEmpty(this.SearchText))
{
var sqlQuery = "SELECT * FROM tblaccount WHERE accountNo = @accountNo ORDER BY accountNo ASC";
cmd = new SqlCommand(sqlQuery, cn);
cmd.Parameters.Add(new SqlParameter("accountNo", SqlDbType.NVarChar);
cmd.Parameters[0].Value = this.SearchText;
}
else
{
cmd = new SqlCommand("SELECT * FROM tblaccount ORDER BY accountNo ASC", cn);
}
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds;
}
}
}
现在您需要更改视图的html,以便SearchData作为模型的一部分从UI发送到控制器。更改搜索文本框的html,如下所示
<input type="text" class="form-control" id="SearchText" name="SearchText" />
这应该可以帮助您解决问题。在方法1中,您可以在这里给我一个示例代码:public ActionResult Index(string txtSearchterm)//当您单击此处的提交按钮时,您将得到值{//您可以使用该值执行任何操作}我没有使用实体框架,这是否仍然有效?是的,它不是必需的实体框架,您只需将该参数传递给所需的任意方法,并用该参数替换select查询。ex:sqlQuery=“”从tblaccount中选择*,其中accountNo=”“+txtSearchterm+”“按accountNo ASC排序”"; 希望对您有所帮助,谢谢。但是我的sql查询在SelecModel.cs中,而不是在HomeController.cs中,我将如何做到这一点?请给我一个示例代码,非常感谢。好的,我已经根据您的要求更新了答案,请看一下。希望这次你一定能得到解决方案..谢谢..更新:忘记在视图索引上添加按钮。chtmlI在var sqlQuery上遇到一个错误;它说“隐式类型的变量必须初始化”