2017-07-28 58 views
0

我正在开发一个项目,其中需要有一个搜索框来查找包含输入字符串的记录,然后将它们显示在页面上。理想情况下,要求在输入字符串时过滤掉结果,但如果不可能,只需要搜索按钮即可找到最终结果。我对ASP.NET Core不太了解,所以我不知道如何做到这一点。 起初,我认为我可以通过获取输入值并将其放到sql语句中,然后显示它,如下所示:ASP.NET Core使用c#变量从输入框中获取值

(上下文:使用Visual Studios 2017企业版,使用.cshtml文件)

<input id="pleaseWork" type="text" /> 
<button onclick="@workAlready()">search</button> 

@{ 
    public void workAlready(){ 
     var inpString = document.getElementByID("pleaseWork").value 

     string sql = "SELECT * FROM Table WHERE (ID = '" + inpString + "')"; 
     SqlConnection connect = new SqlConnection(Connection); 
     SqlCommand command = new SqlCommand(sql, connect); 
     conn.Open(); 
     SqlDataReader nwReader = command.ExecuteReader(); 
     /*...Display results*/ 
    } 
} 

这没关系的工作 - (还好是相对于这个问题,不顾恶劣的编码实践和丑陋的代码) - 如果我能做到这一点,得到了输入字段值到AC#变量,但两种类型的变量都不能很好地发挥作用,我找不到任何这样做的方法。我搜索了很多地方,并且我听到很多关于使用控制器等的讨论,但是由于我对.NET Core的知识有限(以及MVC),所以我无法实现它。所以我想我的问题是想知道是否有可能这样做?我可以将输入值作为c#变量吗?任何帮助将不胜感激!

+0

创建编码实践要遵循,你没有使用MVC的原因是什么? – Hristo

回答

0

我不会推荐学习MVC框架以及一门新的语言。你现在正在尝试调用一个处理过的页面中的预处理方法(提示:这是不可能的)。你需要做的是在你的服务器端代码库(即控制器层,MVC中的C)中定义控制器和动作。

你可以在前端使用任何语言来调用这个控制器(我建议你只是使用jQuery,因为你对所有这些都很新颖)。 JQuery是JavaScript,因此您可以通过点击输入字段实际调用您在jQuery脚本中定义的函数。

所以做两件事,学习如何发送一个AJAX请求(POST)到服务器。其次,学习如何在代码库中正确地创建一个简单的控制器 - 动作。

一旦你有了这两套,你可以在你的视图和控制器之间进行通信。之后,你可以开始思考SQL,但是不早点。

0

通过AJAX将数据传递到您的控制器。

控制器可能是这样的:

public class HomeController : Controller 
{ 
    [HttpPost] 
    public String HandleValue([FromBody] string inpString) 
    {  
     string sql = "SELECT * FROM Table WHERE (ID = '" + inpString + "')"; 
     SqlConnection connect = new SqlConnection(Connection); 
     SqlCommand command = new SqlCommand(sql, connect); 
     conn.Open(); 
     SqlDataReader nwReader = command.ExecuteReader(); 
     // format and return the results 
    } 
} 

然后从你的JavaScript发布数据到控制器:

var inpString = document.getElementByID("pleaseWork").value; 

var options = { 
    method: 'POST', 
    body: inpString 
} 
fetch('/Home/HandleValue', options).then(function(response) { 
    return response.json(); 
}).then(function(results) { 
    // display results, it contains the data you returned from the controller as json. 
}); 

或者你可以用好老Forms