繁体   English   中英

如何从 ASP.NET Core MVC 中的一个控制器调用或返回另一个控制器的视图

[英]How to call or return the view of another controller from one controller in ASP.NET Core MVC

我的项目结构是这样的:

  • 控制器/PartographController.cs

    • 视图/Partograph/Create.cshtml
  • 控制器/BirthDetailsController.cs

    • 视图/BirthDetails/Create.cshtml

是否可以从一个控制器显示两种创建方法?

比如说我有一个PartographController和一个Partograph/Create.cshtml视图。 在 PartographController 中,我可以轻松地创建新的 partograph。

现在说我还有一个BirthDetailsController和一个BirthDetails/Create.cshtml视图。

我想展示一个控制器的创建方法,但是当用户输入不同的表单并最终尝试提交它时,它会影响特定的控制器。

我怎样才能做到这一点? 有没有好的方法来做到这一点?

提前致谢

其中之一是使用 Javacript 更改发布操作 URL,并将表单定向到您想要的控制器。 我不知道这对您来说是否是一个好的解决方案,但您可以显示和隐藏 2 个不同的表单并单独发布它们。

您可以在目标控制器中尝试如下:

[Route("Partograph/Create")]
        public IActionResult Create1() 
        {
            return View();
        }
        [Route("BirthDetails/Create")]
        public IActionResult Create2()
        {
            return View();
        }

将名为“Create1”和“Create2”的两个视图移动到目标文件夹

更新:

我所有的代码和相关的以及调试结果:

楷模:

public class Model1
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    public class Model2
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    public class ViewModel
    {
        public Model1 M1 { get; set; }
        public Model2 M2 { get; set; }

    }

在家庭控制器中:

public IActionResult Create()
        {
            return View();
        }
        [Route("Model1/Create")]
        public IActionResult Create1()
        {
            return View();
        }
        [Route("Model2/Create")]
        public IActionResult Create2()
        {
            return View();
        }

查看创建:

@model ViewModel
<a>Create M1</a>
<form asp-controller="Model1" asp-action="Create">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <div class="form-group">
        <label asp-for="M1.Id" class="control-label"></label>
        <input asp-for="M1.Id" class="form-control" />
        <span asp-validation-for="M1.Id" class="text-danger"></span>
    </div>
    <div class="form-group">
        <label asp-for="M1.Name" class="control-label"></label>
        <input asp-for="M1.Name" class="form-control" />
        <span asp-validation-for="M1.Name" class="text-danger"></span>
    </div>

    <div class="form-group">
        <input type="submit" value="Create" class="btn btn-primary" />
    </div>
</form>
<a>Create M2</a>
<form asp-controller="Model2" asp-action="Create">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <div class="form-group">
        <label asp-for="M2.Id" class="control-label"></label>
        <input asp-for="M2.Id" class="form-control" />
        <span asp-validation-for="M2.Id" class="text-danger"></span>
    </div>
    <div class="form-group">
        <label asp-for="M2.Name" class="control-label"></label>
        <input asp-for="M2.Name" class="form-control" />
        <span asp-validation-for="M2.Name" class="text-danger"></span>
    </div>

    <div class="form-group">
        <input type="submit" value="Create" class="btn btn-primary" />
    </div>
</form>

查看创建1:

@model ViewModel
<a>Create M1</a>
<form asp-controller="Model1" asp-action="Create">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <div class="form-group">
        <label asp-for="M1.Id" class="control-label"></label>
        <input asp-for="M1.Id" class="form-control" />
        <span asp-validation-for="M1.Id" class="text-danger"></span>
    </div>
    <div class="form-group">
        <label asp-for="M1.Name" class="control-label"></label>
        <input asp-for="M1.Name" class="form-control" />
        <span asp-validation-for="M1.Name" class="text-danger"></span>
    </div>

    <div class="form-group">
        <input type="submit" value="Create" class="btn btn-primary" />
    </div>
</form>

查看 Create2:

@model ViewModel
<a>Create M2</a>
<form asp-controller="Model2" asp-action="Create">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <div class="form-group">
        <label asp-for="M2.Id" class="control-label"></label>
        <input asp-for="M2.Id" class="form-control" />
        <span asp-validation-for="M2.Id" class="text-danger"></span>
    </div>
    <div class="form-group">
        <label asp-for="M2.Name" class="control-label"></label>
        <input asp-for="M2.Name" class="form-control" />
        <span asp-validation-for="M2.Name" class="text-danger"></span>
    </div>

    <div class="form-group">
        <input type="submit" value="Create" class="btn btn-primary" />
    </div>
</form>

调试结果: 在此处输入图像描述

以我的理解,您想将两个“Create”方法移动到另一个控制器中,如果我的理解有任何错误,请指出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM