我如何在不同的控制器中调用方法,包括使用 mvc 6 的参数

Posted

技术标签:

【中文标题】我如何在不同的控制器中调用方法,包括使用 mvc 6 的参数【英文标题】:How can i invoke a method in a different controller including parameters using mvc 6 【发布时间】:2016-05-18 08:17:33 【问题描述】:

我是开发 Web 应用程序的新手,最重要的是 mvc 新手。我正在尝试从一个视图导航到另一个控制器操作,包括参数。我当前显示的视图中有以下代码:

<p>
<a asp-controller="Working_set" asp-action="Create">Create new Working set</a>
</p>

@foreach (var item in Model)

<div class="col-sm-6 col-md-3">
    <div class="thumbnail tile tile-medium">
        <a asp-controller="SelectedWorking_set" asp-action="index">
            <h2>
                @html.DisplayFor(modelItem => item.Name)
                <input name="workingSetID" type="hidden" value="@item.Working_setID" />
            </h2>
        </a>
    </div>
</div>

如何在下面的控制器 SelectedWorking_set 中使用 Working_setID:

[Route("SelectedWorking_set")]
public class SelectedWorking_setController: Controller

    private FlightmapContext _context;

    public SelectedWorking_setController(FlightmapContext context)
    
        _context = context;
    

    public IActionResult Index()
    
        return View();
    

    [HttpPost("Index")]
    public IActionResult Index([FromBody]int workingSetID)
    
        //return View(_context.Project.ToList());
        return View();
    

【问题讨论】:

【参考方案1】:

您需要将输入名称传递给您的控制器方法,如下例所示;

<input name="workingSetID" type="hidden" value="@item.Working_setID" />

这里“workingSetID”名称我们需要传递您的控制器方法,假设您的方法名称是“Index”那么您需要在控制器中这样写。

[HttpPost]
public ActionResult Index(string workingSetID)

   //Code here

这样,您将在控制器方法中获得“Working_setID”值。您还需要提交按钮才能将此值发布到控制器。

【讨论】:

以上是关于我如何在不同的控制器中调用方法,包括使用 mvc 6 的参数的主要内容,如果未能解决你的问题,请参考以下文章

使用标签助手调用控制器,包括来自 asp.net core mvc 中搜索栏的数据

MVC如何从视图调用控制器中的动作以返回值

从 MVC 中控制器中的不同方法向视图发送消息

超链接 MVC - 动作方法如何知道她在调用时位于哪个控制器中

如何在 ASP.NET MVC 的视图中调用多个操作?

MVC - 需要从视图调用控制器中的方法