【问题标题】:ASP.NET MVC passing Data from Controller Action to a second controller for outputASP.NET MVC 将数据从控制器动作传递到第二个控制器以进行输出
【发布时间】:2010-08-27 19:27:09
【问题描述】:

所以基本上我有一个带有浏览器过滤器的表单,用于显示我正在显示的数据。我希望我可以简单地向我的“SearchPost”控制器执行一个帖子,该控制器处理所有传入的过滤器,然后吐出一个 Jquery 网格进行输出,但不幸的是我无法找到一个免费的 Jquery 网格视图工作.

也就是说,我仍在使用 Ajax Post 来执行数据查询,但反过来我想呈现一个局部视图,该视图会将数据从“SearchPost”控制器操作传递回我的“DataOutput” " 控制器动作。

例子:

这是我的 Ajax 调用:

 $.ajax(
     {
     type: "POST",
     url: "/TFS/SearchPost",
     data: $("#myform").serialize(),

     success: function () {
         $("#showresults").load("/TFS/DataOutput");
         },

      error: function (req, status, error) {
         alert("Sorry! We could not receive your feedback at this time.");
         }
      });

反过来,它会调用这个控制器动作来查询我的数据并以某种方式生成我的输出列表/网格:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SearchPost(TFS_mysearch tfs)
{

    List<Msg> TFSData = (from z in _DB.Msg.Take(10) select z).ToList();

    return ????       
}

然后我的 Ajax 帖子的“成功”部分将调用第二个控制器操作,该操作将呈现包含结果的部分视图。这有意义吗??

public ActionResult DataOutput(List<String> mylist) {

    return PartialView("DataOutput", mylist);

}

如果有人有一种简单的方法可以将我的列表数据输出渲染到 Json 以便我可以直接在我的 ajax 中完成,我也可以这样做,但我认为使用局部视图可能会更简洁。

【问题讨论】:

    标签: asp.net-mvc model-view-controller


    【解决方案1】:

    所以基本上您不希望 SearchPost 返回视图,而是返回数据?

    也许你想要:

    public ActionResult SearchPost(TFS_mysearch tfs)
    {
    
        List<Msg> TFSData = (from z in _DB.Msg.Take(10) select z).ToList();
    
        return DataOutput(TFSData);      
    }
    public ActionResult DataOutput(List<String> mylist) {
    
        return PartialView("DataOutput", mylist);
    
    }
    

    除了TFSDataMsg 的列表而DataOutput 想要一个字符串列表。如果你能重新协调,那么上面的方法就可以了。

    【讨论】:

    • 你上面描述的是我理论上需要的,但是你能不能从另一个“actionresult”中调用一个控制器“actionresult”......当尝试对此进行实验时,最初的“返回数据输出();" call 给了我一个错误,表明“FormTest.Controllers.HomeController.Dataoutput(FormTest.Models.DataList)”是一个“方法”,但被用作一个“类型”
    • 我尝试使用“RedirectToaction”并传递数据,但是因为我正在通过 Ajax 执行帖子并希望返回部分视图,所以不确定这是否可行...
    【解决方案2】:
    【解决方案3】:

    怎么样:

    [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult SearchPost(TFS_mysearch tfs)
    {
    
        List<Msg> TFSData = (from z in _DB.Msg.Take(10) select z).ToList();
    
        return this.Json(TFSData);       
    }
    

    查看blog post 以获得更完整的示例。

    【讨论】:

      猜你喜欢
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多