方式一:通过viewmodel绑值传递
modelview中:
using Microsoft.AspNetCore.Mvc.Rendering;
namespace WebApplication1.Models
{
public class AlarmViewModel
{
public List<Alarm>? alarms { get; set; }
public List<User>? users { get; set; }
public SelectList? areaList { get; set; }
public string? areaName { get; set; }
public string? tagName { get; set; }
public string? startTime { get; set; }
public string? endTime { get; set; }
}
}
html中:
@model WebApplication1.Models.AlarmViewModel
@{
ViewData["Title"] = "Index";
}
<form asp-controller="Alarm" asp-action="Index">
<div class="row">
<div class='col-sm-12'>
<div class='col-sm-2'>
<label>开始时间:</label>
</div>
<div class='col-sm-3'>
<div class="form-group">
<div class='input-group date' id='datetimepickerStart'>
<input type='text' class="form-control" name="startTime" />
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
</div>
<div class='col-sm-2'>
<label>结束时间:</label>
</div>
<div class='col-sm-3'>
<div class="form-group">
<div class='input-group date' id='datetimepickerEnd'>
<input type='text' class="form-control" name="endTime" />
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
</div>
<div class='col-sm-2'>
<input type="submit" value="查询" />
</div>
</div>
</div>
</form>
<table class="table table-striped">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.alarms![0].id)
</th>
<th>
@Html.DisplayNameFor(model => model.alarms![0].fd_tagname)
</th>
<th>
@Html.DisplayNameFor(model => model.alarms![0].fd_tagdesp)
</th>
<th>
@Html.DisplayNameFor(model => model.alarms![0].fd_firstalarmarea)
</th>
<th>
@Html.DisplayNameFor(model => model.alarms![0].fd_occurtime)
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.alarms!)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.id)
</td>
<td>
@Html.DisplayFor(modelItem => item.fd_tagname)
</td>
<td>
@Html.DisplayFor(modelItem => item.fd_tagdesp)
</td>
<td>
@Html.DisplayFor(modelItem => item.fd_firstalarmarea)
</td>
<td>
@Html.DisplayFor(modelItem => item.fd_occurtime)
</td>
</tr>
}
</tbody>
</table>
controller中:
[HttpPost]
public string Index(string startTime, string endTime, string areaName, string tagName)
{
return "开始时间为:" + startTime + "结束时间为:" + endTime + "区域名称为:" + areaName + "变量名称为:" + tagName;
}
方式二:通过BindProperty属性绑值
html中:
@model IEnumerable<WebApplication1.Models.Alarm>
@{
ViewData["Title"] = "Index";
}
<form asp-controller="Alarm" asp-action="Index">
<div class="row">
<div class='col-sm-12'>
<div class='col-sm-2'>
<label>开始时间:</label>
</div>
<div class='col-sm-3'>
<div class="form-group">
<div class='input-group date' id='datetimepickerStart'>
<input type='text' class="form-control" name="startTime" />
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
</div>
<div class='col-sm-2'>
<label>结束时间:</label>
</div>
<div class='col-sm-3'>
<div class="form-group">
<div class='input-group date' id='datetimepickerEnd'>
<input type='text' class="form-control" name="endTime" />
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
</div>
<div class='col-sm-2'>
<input type="submit" value="查询" />
</div>
</div>
</div>
<div class="row">
<div class='col-sm-12'>
<div class='col-sm-2'>
<label>变量名称:</label>
</div>
<div class='col-sm-3'>
<div class="form-group">
<input type='text' class="form-control" id="tagName" name="tagName" />
</div>
</div>
<div class='col-sm-2'>
<label>报警区域:</label>
</div>
<div class='col-sm-3'>
<select class="form-control selectpicker" aria-label="Default select example" id="areaName" name="areaName">
</select>
</div>
</div>
</div>
</form>
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table table-striped">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.id)
</th>
<th>
@Html.DisplayNameFor(model => model.fd_tagname)
</th>
<th>
@Html.DisplayNameFor(model => model.fd_tagdesp)
</th>
<th>
@Html.DisplayNameFor(model => model.fd_firstalarmarea)
</th>
<th>
@Html.DisplayNameFor(model => model.fd_occurtime)
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.id)
</td>
<td>
@Html.DisplayFor(modelItem => item.fd_tagname)
</td>
<td>
@Html.DisplayFor(modelItem => item.fd_tagdesp)
</td>
<td>
@Html.DisplayFor(modelItem => item.fd_firstalarmarea)
</td>
<td>
@Html.DisplayFor(modelItem => item.fd_occurtime)
</td>
</tr>
}
</tbody>
</table>
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.bootcss.com/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdn.bootcss.com/moment.js/2.22.0/moment-with-locales.js"></script>
<script src="https://cdn.bootcss.com/bootstrap-datetimepicker/4.17.47/js/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript">
$('#datetimepickerStart').datetimepicker({
format: 'YYYY-MM-DD hh:mm:ss',
locale: moment.locale('zh-cn'),
});
$('#datetimepickerEnd').datetimepicker({
format: 'YYYY-MM-DD hh:mm:ss',
locale: moment.locale('zh-cn'),
});
loadAreaData(); //执行此函数,从后台获取数据,拼接成option标签,添加到select的里面
function loadAreaData() {
$.ajax({
url: "/alarm/GetAreaList",
type: 'GET',
async: false,
datatype: 'json',
success: function(data) {
if (data) {
var areanames = [];
for (var i = 0; i < data.datas.length; i++) {
//拼接成多个<option><option/>
areanames.push('<option value="' + data.datas[i].area + '">' + data.datas[i].area + '</option>')
}
$("#areaName").html(areanames.join(' '));
}
},
error: function() {
alert('报警区域查询错误');
}
});
}
</script>
controller中:
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using WebApplication1.Data;
using WebApplication1.Models;
namespace WebApplication1.Controllers
{
public class AlarmController : Controller
{
private readonly AlarmContext _context;
private readonly UserContext _context_user;
[BindProperty(SupportsGet = true)]
public string? startTime { get; set; }
[BindProperty(SupportsGet = true)]
public string? endTime { get; set; }
[BindProperty(SupportsGet = true)]
public string? areaName { get; set; }
[BindProperty(SupportsGet = true)]
public string? tagName { get; set; }
public AlarmController(AlarmContext context, UserContext context_user)
{
_context = context;
_context_user = context_user;
}
public async Task<IActionResult> Index()
{
return View(await _context.alarms.ToListAsync());
}
/// <summary>
/// 条件查询报警区域信息
/// </summary>
/// <returns></returns>
[HttpPost]
public string Index(string startTime, string endTime, string areaName, string tagName)
{
return "开始时间为:" + startTime + "结束时间为:" + endTime + "区域名称为:" + areaName + "变量名称为:" + tagName;
}
/// <summary>
/// 获取报警区域信息
/// </summary>
/// <returns></returns>
public IActionResult GetAreaList()
{
List<User> users = _context_user.users.OrderBy(m => m.area).ToList();
return Json(new
{
datas = users.Select(s => new
{
s.area
}).Distinct()
});
}
}
}