【发布时间】:2017-05-13 02:11:08
【问题描述】:
我有一个 ASP.NET 项目。 MVC Core 带有一系列表格。每个都有一个名为“年”的字段。在 _Layout 中,我有一个包含未来 5 年(2017 年、2018 年等)的下拉列表。我想在控制器的每个操作中接收下拉选择的值,以便将过滤器“按年份”应用于查询。
_LAYOUT.CSHTML 页面
<select name="EF_DROP" id="EF_DROP" class="btn btn-default" style="width:105px;" aria-haspopup="true" aria-expanded="true" type="button">
<option value="0">EF 2017</option>
<option value="1">EF 2018</option>
<option value="2">EF 2019</option>
<option value="3">EF 2020</option>
</select>
//this is my Jquery to set Hidden Fields
$(function () {
$("#EF_DROP").on("change", function () {
$("#YEAR").val($(this).find(":selected").text().substr(3, 4));
});
});
$(function () {
$("#YEAR").val($("#EF_DROP").find(":selected").text().substr(3, 4));
});
每个查看页面
<input type="hidden" asp-for="YEAR" />
问题出在控制器上:
public async Task<IActionResult> Index()
{
var applicationDbContext = _context.MYTABLE.Include(a => a.RELATE)
.Where(x=>x.Year == **??**);
return View(await applicationDbContext.ToListAsync());
}
我尝试添加一个 Singleton,但无法从集合或 Request.Form["name"]...中找到 getValue。 有人可以帮助我吗?提前致谢。
【问题讨论】:
-
为什么不直接使用年份本身作为值呢?喜欢
<option value="2017">EF 2017</option> -
在这种模式下我可以简化什么?对不起初学者的问题!但我不是专家。
-
这样你甚至不需要使用隐藏字段
YEAR。只需将EF_DROP重命名为YEAR。您也不需要任何 jQuery 代码。 -
使用继承,你需要在你的类层次结构的高层中使用 year 属性,以便它在低层类中获得更多的可见性。创建一个“BaseController”(从 MVC Controller 类继承)类并将“Year”添加为该 BaseController 中的公共属性。从基本控制器继承您的 MVC 控制器。属性“Year”将在 BaseController 继承的所有控制器中可用。 Razor 视图中也可以访问“年份”。
-
谢谢!!我现在就试试!
标签: c# jquery asp.net asp.net-mvc .net-core