Asp.net mvc 如何在表单sumission上保留下拉列表值

Asp.net mvc 如何在表单sumission上保留下拉列表值,asp.net-mvc,razor,Asp.net Mvc,Razor,当我更改下拉列表时,由于表单提交,页面显示为回发。如何在表单提交时保留下拉选择值。 我将添加一个webgrid,它将在下拉列表中显示基于所选年份的记录。因此,我还想知道实现这些场景的最佳实践。 这是我的控制器类 public ActionResult NewActivity() { List<SelectListItem> lstYear = new List<SelectListItem>(); lstYear.Add(new

当我更改下拉列表时,由于表单提交,页面显示为回发。如何在表单提交时保留下拉选择值。 我将添加一个webgrid,它将在下拉列表中显示基于所选年份的记录。因此,我还想知道实现这些场景的最佳实践。 这是我的控制器类

 public ActionResult NewActivity()
    {
        List<SelectListItem> lstYear = new List<SelectListItem>();
        lstYear.Add(new SelectListItem { Value = "0", Text = "Select" });
        lstYear.Add(new SelectListItem { Value = "1", Text = "2017" });
        lstYear.Add(new SelectListItem { Value = "2", Text = "2018" });
        ViewBag.SelectedItem = "Select";
        ViewBag.YearList = lstYear;
        return View();
    }

    [HttpPost]
    public ActionResult NewActivity(string strYears)
    {
        return View(NewActivity);
    }
public ActionResult NewActivity()
{
列表年份=新列表();
添加(新的SelectListItem{Value=“0”,Text=“Select”});
添加(新建SelectListItem{Value=“1”,Text=“2017”});
添加(新的SelectListItem{Value=“2”,Text=“2018”});
ViewBag.SelectedItem=“选择”;
ViewBag.YearList=第一年;
返回视图();
}
[HttpPost]
公共操作结果NewActivity(字符串字符串字符串)
{
返回视图(NewActivity);
}
这就是我的观点

<h2>NewActivity</h2>
@using (Html.BeginForm("NewActivity", "Activity", FormMethod.Get))
{
    @Html.DropDownList("strYears", new SelectList(ViewBag.YearList, "Value", "Text", ViewBag.SelectedItem), new { onchange = "form.submit();" })
}
NewActivity
@使用(Html.BeginForm(“NewActivity”、“Activity”、FormMethod.Get))
{
@DropDownList(“strYears”,新的选择列表(ViewBag.YearList,“Value”,“Text”,ViewBag.SelectedItem),新的{onchange=“form.submit();”)
}

我是MVC新手。请指导我在操作后添加所选项目的值。我假设
strYears
是DropDownList中所选项目的值

[HttpPost]
public ActionResult NewManageActivity(string strYears)
{
    ViewBag.SelectedItem = strYears;
    return View(NewManageActivity);
}

使用Ajax.BeginForm而不是Html.BeginForm,并部分更新page.thnx。。smhw我能解决这个问题。使用viewbag将数据传递回视图。