MVC3下拉列表控件不保持状态,为什么呢? [英] MVC3 Drop Down List Control does not keep State, Why?

查看:148
本文介绍了MVC3下拉列表控件不保持状态,为什么呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个下拉的局部视图列表控件和张贴下拉列表控件的状态不会维持表单之后

下面是局部视图CSHTML code:

  @model MvcApplication1.Models.TestCriteriaConsolidated
@using(Html.BeginForm(结果,家))
{
 < D​​IV的风格=浮动:左>
                其中p DIV风格=字体重量:大胆>
                    @ Html.LabelFor(M = GT; m.testCriteria.Year)
                < / DIV>
                < D​​IV的风格=WIDTH:110px;>
                     @ Html.DropDownListFor(M = GT; m.testCriteria.Year,新的SelectList(新[]
                     {                        新SelectListItem的{text =所有年份,值=},
                        新SelectListItem的{text =2010,值=2010},
                        新SelectListItem的{text =2009,值=2009},
                        新SelectListItem的{text =2008,值=2008},
                        新SelectListItem的{text =2007,值=2007},
                        新SelectListItem的{text =2006,值=2006}                     },值,文本,1),新{@style =WIDTH:100px的;的margin-top:5像素})
                < / DIV>
            < / DIV>            < D​​IV的风格=浮动:左>
                < D​​IV>
                    &安培; NBSP;
                < / DIV>
                < D​​IV的风格=宽度:100像素;>
                     <输入类型=提交值=结果/>
                < / DIV>
            < / DIV>

}

下面是我的CONTROLER code:

 公众的ActionResult指数()
    {
        返回查看();
    }    公众的ActionResult结果()
    {
        今年字符串的Request.Form = [testCriteria.Year];        清单< TestCriteriaResults>测试=新名单< TestCriteriaResults>();        test.Add(新TestCriteriaResults {值1 =一字,值2 =一字,值3 =三,值4 =四});
        test.Add(新TestCriteriaResults {值1 =一字,值2 =两节,值3 =三,值4 =四});
        test.Add(新TestCriteriaResults {值1 =一字,值2 =两节,值3 =三,值4 =四});
        test.Add(新TestCriteriaResults {值1 =一字,值2 =两节,值3 =三,值4 =四});
        test.Add(新TestCriteriaResults {值1 =一字,值2 =两节,值3 =三,值4 =四});        TestCriteriaConsolidated合并=新TestCriteriaConsolidated();
        combined.testCriteriaResults =测试;        返回PartialView(组合);
    }

新型改性操作方法(这仍然不保持状态):

 公众的ActionResult结果()
    {
        今年字符串的Request.Form = [testCriteria.Year];
        清单< TestCriteriaResults>测试=新名单< TestCriteriaResults>();        test.Add(新TestCriteriaResults {值1 =一字,值2 =一字,值3 =三,值4 =四});
        test.Add(新TestCriteriaResults {值1 =一字,值2 =两节,值3 =三,值4 =四});
        test.Add(新TestCriteriaResults {值1 =一字,值2 =两节,值3 =三,值4 =四});
        test.Add(新TestCriteriaResults {值1 =一字,值2 =两节,值3 =三,值4 =四});
        test.Add(新TestCriteriaResults {值1 =一字,值2 =两节,值3 =三,值4 =四});        TestCriteriaConsolidated合并=新TestCriteriaConsolidated();
        TestCriteria标准=新TestCriteria(){=年全年};        combined.testCriteriaResults =测试;
        combined.testCriteria =标准;        返回PartialView(组合);
    }


解决方案

以下code你的下一个局部视图创建视图模型:

  TestCriteriaConsolidated合并=新TestCriteriaConsolidated();
combined.testCriteriaResults =测试;

您需要设置一年多,这个模型:

  combined.testCriteria.Year =的Request.Form [testCriteria.Year];

I have a drop down list control on a partial view and after posting the form the state of the drop down list control is not maintained

Here is the partial view cshtml code:

@model MvcApplication1.Models.TestCriteriaConsolidated


@using (Html.BeginForm("Results", "Home"))
{
 <div style="float:left">
                <div style="font-weight:bold">                
                    @Html.LabelFor(m => m.testCriteria.Year)
                </div>
                <div style="width:110px; ">   
                     @Html.DropDownListFor(m => m.testCriteria.Year, new SelectList(new[] 
                     { 

                        new SelectListItem{ Text="All Years", Value=" " },
                        new SelectListItem{ Text="2010", Value="2010" },
                        new SelectListItem{ Text="2009", Value="2009" },
                        new SelectListItem{ Text="2008", Value="2008" },
                        new SelectListItem{ Text="2007", Value="2007" },
                        new SelectListItem{ Text="2006", Value="2006" }

                     }, "Value", "Text", "1"), new { @style = "width: 100px; margin-top: 5px" })          
                </div>
            </div>

            <div style="float:left">
                <div>                
                    &nbsp;
                </div>
                <div style="width:100px; ">                                
                     <input type="submit"  value="Results" />
                </div>
            </div>

}

Here is my controler code:

 public ActionResult Index()
    {                     
        return View();
    }

    public ActionResult Results()
    {
        string year = Request.Form["testCriteria.Year"];

        List<TestCriteriaResults> test = new List<TestCriteriaResults>();

        test.Add(new TestCriteriaResults { Value1 = "one", Value2 = "one", Value3="three", Value4="Four" });
        test.Add(new TestCriteriaResults { Value1 = "one", Value2 = "two", Value3="three", Value4="four" });
        test.Add(new TestCriteriaResults { Value1 = "one", Value2 = "two", Value3 = "three", Value4 = "four" });
        test.Add(new TestCriteriaResults { Value1 = "one", Value2 = "two", Value3 = "three", Value4 = "four" });
        test.Add(new TestCriteriaResults { Value1 = "one", Value2 = "two", Value3 = "three", Value4 = "four" });           

        TestCriteriaConsolidated combined = new TestCriteriaConsolidated();
        combined.testCriteriaResults = test;

        return PartialView(combined);
    }

NEWLY MODIFIED ACTION METHOD(This still does not maintain state):

public ActionResult Results()
    {
        string year = Request.Form["testCriteria.Year"];


        List<TestCriteriaResults> test = new List<TestCriteriaResults>();

        test.Add(new TestCriteriaResults { Value1 = "one", Value2 = "one", Value3="three", Value4="Four" });
        test.Add(new TestCriteriaResults { Value1 = "one", Value2 = "two", Value3="three", Value4="four" });
        test.Add(new TestCriteriaResults { Value1 = "one", Value2 = "two", Value3 = "three", Value4 = "four" });
        test.Add(new TestCriteriaResults { Value1 = "one", Value2 = "two", Value3 = "three", Value4 = "four" });
        test.Add(new TestCriteriaResults { Value1 = "one", Value2 = "two", Value3 = "three", Value4 = "four" });           

        TestCriteriaConsolidated combined = new TestCriteriaConsolidated();
        TestCriteria criteria = new TestCriteria() { Year = year };

        combined.testCriteriaResults = test;
        combined.testCriteria = criteria;

        return PartialView(combined);
    }

解决方案

The following code creates the view model for your next partial view:

TestCriteriaConsolidated combined = new TestCriteriaConsolidated();
combined.testCriteriaResults = test;

You need to set the year on this model:

combined.testCriteria.Year = Request.Form["testCriteria.Year"];

这篇关于MVC3下拉列表控件不保持状态,为什么呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆