2017-07-28 10 views
0

入力文字列を含むレコードを検索してページに表示するための検索ボックスが必要なプロジェクトに取り組んでいます。理想的には、文字列の入力中に結果をフィルタリングする必要がありますが、不可能な場合は、最終結果を検索するための検索ボタンが機能します。私はASP.NET Coreについてよく知らないので、これをどうやってやるのか分かりません。 最初に、私は入力値をとり、それをSQL文に入れて表示することでこれを行うことができると考えました。ASP.NET C#変数を持つ入力ボックスから値を取得するコア

(コンテキスト:Visual Studio 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*/ 
    } 
} 

これは大丈夫働くだろう - (大丈夫)、問題に関連している悪いコーディングプラクティスと醜いコードを無視 - 私はこれを行うと交流#変数に入力フィールドの値を取得することができた場合には、しかし、両方のタイプの変数がお互いにうまくいっていないので、私はこれを行う方法を見つけることができません。私は多くの場所を検索しましたが、コントローラなどを使用することについて多くの話が聞こえますが、.NET Core(MVCだけでなく)の知識が限られているため、動作させることができません。だから、私の質問は、このようにすることが可能かどうか疑問に思っていますか?入力値をC#変数として取得できますか?どんな助けでも大歓迎です!

+0

MVCを使用していない理由は何ですか? – Hristo

答えて

0

新しい言語と同様、MVCフレームワークの学習はお勧めしません。あなたが今しようとしているのは、処理されたページで前処理されたメソッドを呼び出すことです(ヒント:不可能です)。必要なのは、サーバー側のコードベース(コントローラーレイヤー、MVCのC)でコントローラーとアクションを定義することです。

フロントエンドのどの言語を使ってもこのコントローラを呼び出すことができます(これは、これまでにないので、jQueryを使用することをお勧めします)。 JQueryはjavascriptなので、実際にはjQueryスクリプトで定義した関数を入力フィールドのクリックから呼び出すことができます。

したがって、サーバーにAJAXリクエスト(POST)を送信する方法を学びます。次に、コードベースで簡単なコントローラアクションを正しく作成する方法を学びます。

これらの2つを設定すると、ビューとコントローラ間で通信できます。その後、SQLについて考え始めることができますが、すぐには考えられません。

0

コントローラにデータをAJAXで渡します。

あなたのコントローラは、次のようになります。

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を使用することができます。

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からコントローラにデータを投稿してください。

関連する問題