【问题标题】:Render other controller method in razor view在剃刀视图中渲染其他控制器方法
【发布时间】:2021-05-07 06:44:52
【问题描述】:

据我所知,视图绑定到控制器的操作方法,如 PatientController 的 Details 操作方法结果在 Patient->Details.cshtml 文件夹内的 Patient->Details.cshtml 中实现。

我的问题是如何调用另一个控制器操作方法,例如调用 Appointment 的 Index(其中我在 Patient 的 Details 中实现了一个简单的搜索 Index(string ID)) 以及如何渲染或显示结果。

我在Details(患者)里面试过这个

<form asp-controller="Appointments" asp-action="Index" asp-route-id="ID" method="get">
    <p>
        <dl class="row">
            <dt class="col-sm-2">
                @Html.DisplayNameFor(m => m.ID)
            </dt>
            <dd class="col-sm-10">
                @Html.DisplayFor(model => m.ID)
            </dd>
        </dl>
    </p>
</form>

但那是渲染Patient ID 属性。

【问题讨论】:

  • 这是 .net core 中标签助手的official doc。表单中的标签助手将帮助您执行控制器操作。rendering ControllerA ID property 是什么意思?您想传递一些数据asp-route-id="ID" 到 ControllerB/Index?
  • 控制器操作绑定视图,而不是相反。一个动作应该对应一个端点(例如一个url模式)。您可以编写一个调用其他操作的操作,然后使用来自两个模型的数据呈现视图...
  • @YiyiYou 是的,例如 ControllerA 代表显示患者数据的页面(ID,姓名,...),我还需要调用存储他的诊所预约的页面( ControllerB)这就是为什么我将 id 发送到 index 以获取结果。
  • 您可以使用ControllerB:public IActionResult Index(string id){return View();},然后您可以在ControllerB/Index action中获取id,然后进入ControllerB/Index.cshtml。
  • 怎么调用调用呢?创建新实例不起作用。

标签: c# asp.net-mvc asp.net-core razor


【解决方案1】:

这是一个演示:

模型A:

public class ModelA
    {
        public string ID { get; set; }
    }

控制器:

public IActionResult Index()
        {
            return View(new ModelA { ID="sampleID"});
        }

B控制器:

public IActionResult Index(string id)
        {
            return View();
        }

A/Index.cshtml:

<h1>ControllerA/Index</h1>
<form asp-controller="B" asp-action="Index" asp-route-id=@Model.ID method="get">
    <p>
        <dl class="row">
            <dt class="col-sm-2">
                @Html.DisplayNameFor(m => m.ID)
            </dt>
            <dd class="col-sm-10">
                @Html.DisplayFor(model => model.ID)
            </dd>
        </dl>
    </p>
    <input type="submit" value="submit"/>
</form>

B/Index.cshtml:

<h1>ControllerB/Index</h1>

结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 2011-08-19
    相关资源
    最近更新 更多