c# - 如何将参数传递给控制器功能
问题描述
所以我有一个这样的表格:
@using (Html.BeginUmbracoForm<DataController>("SetYear", null, new { @id = "yearDropdown" }))
{
<div class="form-group">
<select id="Year" name="Year" class="form-control">
@if (objModel.Annums != null)
{
foreach (Int32 intYear in objModel.Annums.OrderByDescending(x => x).ToList())
{
<option
@if (intYear == DateTime.Now.Year)
{
<text>selected</text>
}
value="@intYear">
@intYear
</option>
}
}
</div>
</div>
}
其中的jQuery
一部分提交了更改表单(我意识到这可以内联完成):
if ($("#yearDropdown").length) {
$("#Year").on('change', function () {
$("#yearDropdown").submit();
});
}
我想要做的是将 传递Year
给控制器中的函数,如下所示:
public void SetYear (Int32 intYear)
{
System.Web.HttpContext.Current.Session["Year"] = intYear;
}
这可以只用 C# 来完成,还是我必须querystring
在表单 URL 上附加一个?
解决方案
控制器中的方法应该是一个 Action,它应该返回一个 ActionResult:
[HttpPost]
public ActionResult SetYear (Int32 intYear)
{
System.Web.HttpContext.Current.Session["Year"] = intYear;
return View();
}
此外,Select
元素名称必须与 Action 方法的参数名称匹配 ( intYear
):
@using (Html.BeginUmbracoForm<DataController>("SetYear", null, new { @id = "yearDropdown" }))
{
<div class="form-group">
<select id="Year" name="intYear" class="form-control">
@if (objModel.Annums != null)
{
foreach (Int32 intYear in objModel.Annums.OrderByDescending(x => x).ToList())
{
<option
@if (intYear == DateTime.Now.Year)
{
<text>selected</text>
}
value="@intYear">
@intYear
</option>
}
}
</div>
</div>
}
推荐阅读
- google-app-maker - 延迟换页
- python - 线性回归 - 意外结果 (Python)
- sql-server - SqlConnection 不支持 IP 地址数据源的超时 (.NET Core 2.2)
- haskell - 在类 Functor 的声明中,类型变量可以是函数类型吗?
- styling - 如何为 holoviews 桑基图中的各个类别着色?
- r - 如何将多个不同长度的列表合并到一张表中?
- webhooks - 您可以自定义传入 Webhook 连接器发布到 Teams 的消息的头像吗?
- google-cloud-platform - 限制 API 请求 (compute.instances.listReferrers)
- angular - 全局styles.css中的角度背景颜色不起作用
- ruby - TypeError 没有将 nil 隐式转换为 String