c# - 不使用 AJAX 重新加载 ASP.NET MVC3 局部 View

标签 c# asp.net-mvc-3 razor partial-views

我有一个带有 Razor 的 MVC3 应用程序,我创建了一个在内部呈现局部 View 的 View 。这是主视图的样子:

@{Html.RenderPartial("_SearchFilters", Model.SearchFilters);}

@* Other HTML elements *@

_SearchFilters 局部 View 中,我在 Form 元素中有以下 DropDownLists:

Choose Year
          @Html.DropDownListFor(m => m.Year, new SelectList(Model.YearsList, "Value", "Text"), DateTime.Now.Year)

Choose Month
          @Html.DropDownListFor(m => m.Month, new SelectList(Model.MonthsList, "Value", "Text"), Model.Month.ToString(), new { @disabled = "disabled" })


       <input type="submit" value="Display" />

我希望在 提交 时,两个 DropDownLists 在重新加载 View 时保持它们的状态,即 用户选择的值过滤后的数据。

有没有不使用 AJAX 的方法?

更新

ViewModel如下:

public class TableSearchFiltersViewModel
{
    public bool YTM { get;  set; }

    public int? Month { get; set; }

    public int? Year { get; set; }

    public IEnumerable<SelectListItem> YearsList
    {
        get
        {
        return Enumerable.Range(2011, (DateTime.Now.Year - 2011 + 4)).Select(m => new SelectListItem
        {
            Value = m.ToString(),
            Text = m.ToString(),
        }).OrderBy(m => m.Value);
        }
    }

    public IEnumerable<SelectListItem> MonthsList
    {
        get
        {
           return Enumerable.Empty<SelectListItem>();
        }
    }

谢谢

弗朗切斯科

最佳答案

当您将表单提交给相应的 Controller 操作时,该操作应将某个 View 模型作为输入参数。此 View 模型的属性将从包含在表单中的输入字段绑定(bind),包括两个下拉列表的选定值。然后 Controller 操作可以返回相同的 View ,该 View 将保留下拉框的选定值。

不过我建议您使用编辑器模板而不是渲染部分模板,因为这将确保正确命名下拉菜单并最终保留选定的值:

@Html.EditorFor(x => x.SearchFilters)

关于c# - 不使用 AJAX 重新加载 ASP.NET MVC3 局部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5867356/

相关文章:

c# - 如何在 ASP.NET 中将列表从后端传递到前端

c# - 用正则表达式解析字符串

asp.net-mvc - 如何汇总 Razor MVC4 View 中的值?

asp.net-mvc - MVC查看可为空的日期字段格式

asp.net-mvc - 获取 VS2010,特别是 Razor View ,将自定义 "data-"属性识别为有效

c# - 是否有 ReSharper 快捷方式来查找特定类型的所有实例?

c# - 没有给定的参数对应于 'sir'的所需形式参数 'Money.Money(string)'

asp.net-mvc - MVC-Viewmodel 和 LINQ,将值插入表中,该值被另外两个表中的另外两个值标记

asp.net-mvc-3 - 在 MVC 3.0 中重写 Html.BeginForm() 并保持不显眼的 javascript

asp.net-mvc - mvc 下拉列表中的自动回发