【问题标题】:ASP.NET MVC 2 - ViewData empty after POSTASP.NET MVC 2 - POST 后 ViewData 为空
【发布时间】:2010-05-28 19:06:23
【问题描述】:

我真的不知道在哪里寻找错误...情况:我有一个 ASPX 视图,其中包含一个表单和一些输入,当我单击提交按钮时,所有内容都被发布到其中一个我的 ASP.NET MVC 操作。

当我在那里设置断点时,它被正确命中。当我使用 FireBug 查看发送到操作的内容时,我正确地看到了 data1=abc&data2=something&data3=1234。

但是,我的操作方法中没有任何内容。 ViewData 为空,没有 ViewData["data1"] 或任何其他可以显示数据到达的内容。

这怎么可能?我可以从哪里开始查找错误?

【问题讨论】:

  • wrt data1=abc&data2=... 您的操作方法的方法签名是什么样的?
  • 无参数。 ViewData["data1"] 应该能够访问该值。但它为 null,即使 FireBug 显示该值已提交。
  • 你们知道,实际上mvc中没有回发:),它只是发布
  • @David:我实际上在我的原始函数中使用了参数,但无法让模型绑定工作,然后创建了一个没有参数的测试方法,剩下的就是历史了。当然不能直接访问 FormCollection。
  • @Omu,是的,在 mvc 中没有回发,感谢上帝 :-) 好话。

标签: c# asp.net-mvc asp.net-mvc-2 controller viewdata


【解决方案1】:

从控制器到视图时,ViewData 是相关的。它不会回帖。

你需要你的动作方法看起来像

public ActionResult DoSomething(string data1, string data2, int data3) { ...

那么(模型?参数?)绑定应该为您处理好事情

【讨论】:

    【解决方案2】:

    尝试修改您的 Action 以接受 FormCollection:

    public ActionResult DoSomething(FormCollection fc)
    {
         System.Diagnostics.Debug.Writeline(fc["data1"]);
    }
    

    【讨论】:

      【解决方案3】:

      如果您想查看发布到视图的内容,请接受 FormCollection 作为参数,或将表单元素直接绑定到模型。像这样:

      [AcceptVerbs(HttpVerbs.Post)]
      public ActionResult PostToThisView(FormCollection formItems)
      {
          var data1 = formItems["data1"];
          return View();
      }
      

      另外,see this question

      【讨论】:

        【解决方案4】:

        试试这个:

        Request["data1"]
        

        Request.Form["data1"]
        

        [HttpPost]
        public ActionResult YourPostAction(object data1)
        

        [HttpPost]
        public ActionResult YourPostAction(ACLassThatHasData1Prop viewmodel)
        //your view doesn't has to be strongly typed to the type of the parameter in this case
        

        【讨论】:

        • 关于最后一个示例,用于参数的模型不必与请求来自的视图的强类型模型相同。模型绑定器将简单地获取存储在表单集合中的值(如果请求是 GET,则获取查询字符串)并尝试使用它们来填充指定为参数的任何类型的对象。
        • @Dr.威利的学徒,谢谢你告诉我
        猜你喜欢
        • 2010-10-02
        • 1970-01-01
        • 1970-01-01
        • 2017-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多