问题是:
我正在使用文本框获取字符串 q 并想将其传递给 search
中的 3 个不同操作 Controller 。即 action1(string q), action2(string q)
等等
现在我的操作语法:
public ActionResult action1(string q)
{
var mydata = from p in fab //LINQ logic
select new action1class
{ data1=p //assignment };
return View("_partialAction1", mydata);
}
同样还有另外两个 Action 。
我正在使用 3 种不同的操作,因为我的 LINQ 逻辑从 3 个不同的来源获取数据,所以有不同的 mydata
需要创建。
我的问题是:我尝试在单击文本框的“搜索”按钮 时,所有 3 个操作都应该运行并在某些 <div id="action1">
中生成一个低于另一个的局部 View 标签。
我尝试使用 ajax.BeginForm
但它一次只能调用一个 Action
@using (Ajax.BeginForm("action1", "Search", new AjaxOptions
{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "action1",
LoadingElementId="progress"
}))
我也尝试使用 ViewModel
但问题是我无法将更大的模型与这些 mydata
一起传递给 View 在 LINQ 的 Action 中获得的数据种类。我不清楚在这种情况下如何使用 View 模型。
我使用的方法是否正确?还是可以有别的办法?我想通过单击按钮显示所有操作的结果。
最佳答案
MVC 框架中有两种类型的操作。第一个是主要操作,一次从浏览器调用它们。第二种称为 Child Actions这些 Action 不能从浏览器调用,而是从主要 Action 返回的 View 中调用。多个子 Action 可以在一个主 Action 下被调用。因此,您必须调查 child 行为是否有帮助。
例如
// main action that returns a view
public ViewResult Index()
{
var model = ...
return View(model);
}
// couple of child actions each returns a partial view
// which will be called from the index view
[ChildActionOnly]
public PartialViewResult ChildAction1()
{
var model = ...
return PartialView(model);
}
[ChildActionOnly]
public PartialViewResult ChildAction2()
{
var model = ...
return PartialView(model);
}
// index view
Index.cshtml
@model ...
@Html.Action("ChildAction1");
@Html.Action("ChildAction2");
...
关于c# - 如何在 ASP.NET MVC 的 View 中调用多个操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10915485/