Я новичок в MVC и какое-то время застрял на одной его части. Кажется, я не могу найти ответ (вероятно, потому, что я не ищу то, что нужно). В любом случае, у меня есть проект MVC, который подключается к MySQL db на задней панели. Я хочу, чтобы эта страница отображалась по мере того, как пользователь выбирает дополнительные параметры. На данный момент у меня есть 2 таблицы, одна для среды, а другая для базы данных. Когда пользователь выбирает env, в фоновом режиме выполняется запрос на основе env_id для заполнения доступных баз данных. Я просмотрел несколько видео, которые привели меня туда, где я сейчас нахожусь. Я могу заставить поле Environment заполнить нормально, но не могу понять, как передать значение между div. Если я перемещу foreach вверх в первый div, я могу заставить его заполнить одно значение, но ничего при щелчке.
Если бы кто-нибудь мог указать мне на хороший учебник, который делает что-то подобное, это было бы здорово.
контроллер
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using apollo.Models;
using System.Data;
namespace apollo.Controllers
{
public class dbController : Controller
{
// GET: db
DBAccessLayer.db dblayer = new DBAccessLayer.db();
public ActionResult Index()
{
DataSet ds = dblayer.get_environment();
ViewBag.environment = ds.Tables[0];
return View(ds);
}
public void get_database(int env_id)
{
DataSet ds = dblayer.get_database(env_id);
List<database> databaselist = new List<database>();
foreach (DataRow dr in ds.Tables[0].Rows)
{
databaselist.Add(new database{
db_name = dr["db_name"].ToString()
});
}
Session["database"] = databaselist;
}
}
}
вид
@{
}
<script src="~/Scripts/jquery-3.5.1.min.js">
</script>
<h2>QueryTool</h2>
<div class="container-fluid">
<div class="row">
<div class="col-md-4">
<div class="jumbotron">
<h3>Environment</h3>
@{
foreach (System.Data.DataRow dr in ViewBag.environment.Rows)
{
<div class="radio">
<label>
<input type="radio" name="optionsRadios" id=" @dr["env_id"]" value=" @dr["env_id"]" checked>
@dr["env_name"]
@{
((apollo.Controllers.dbController)this.ViewContext.Controller).get_database((Convert.ToInt32(dr["env_id"])));
}
</label>
</div>
}
}
</div><!-- /.col-lg-6 -->
</div>
<div class="col-md-4">
<div class="jumbotron">
<h3>Database</h3>
@{
foreach (apollo.Models.database dbname in Session["database"] as List<apollo.Models.database>)
{
@dbname.db_name
}
}
</div>
</div>
</div>
</div>
уровень доступа к базе данных
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Configuration;
using MySql.Data.MySqlClient;
namespace apollo.DBAccessLayer
{
public class db
{
MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["MysqlConnection"].ConnectionString);
public DataSet get_environment()
{
string query = "Select * from env";
MySqlCommand command = new MySqlCommand(query, conn);
MySqlDataAdapter da = new MySqlDataAdapter(command);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
public DataSet get_database(int env_id)
{
MySqlCommand command = new MySqlCommand("Select * from permission where env_id = @env_id", conn);
command.Parameters.AddWithValue("env_id", env_id);
MySqlDataAdapter da = new MySqlDataAdapter(command);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
}
}