ASP.NET MVC 5 -多个操作方法的一个视图?

nhaq1z21  于 2023-06-25  发布在  .NET
关注(0)|答案(1)|浏览(153)

在我的应用程序中,我需要显示相同数据的三个视图:员工详细信息数据和员工工作职位(工作历史)。它们仅在某些按钮上有所不同。
正如您在下面的图像中所看到的,Details视图显示了数据,唯一可用的操作是“返回”。第二个是EditView。编辑,这里,意味着只添加一个新的职位。其他员工数据不可编辑。第三个视图用于更改员工状态(已启用、已禁用、已删除):页脚中的按钮根据当前员工状态可见/隐藏。

详情

编辑

ChangeState

您认为对所有三种方法(Detail、Edit、ChangeState)都有一个视图是一个好选择吗?
传递给视图的ViewModel应该具有要计算的属性,以便显示\隐藏按钮。例如:CurrentState(启用、禁用、删除)、Action(ShowDetail、Edit、ChangeState)。
我还在考虑使用两个局部视图来显示员工详细信息和职位部分。

mlnl4t2r

mlnl4t2r1#

您是否考虑过使用局部视图?
控制器:

[Route("no-partial")]
public IActionResult Index()
{
    var model = new CustomModel()
    {
        Name = "Home",
    };

    return View("~/Views/Home/Index.cshtml", model);
}

[Route("with-partial")]
public IActionResult IndexWithPartialView()
{
    var model = new CustomModel()
    {
        Name = "Home",
        PartialViewPath = "~/Views/Shared/_MyPartialView.cshtml"
    };

    return View("~/Views/Home/Index.cshtml", model);
}

浏览次数:

@model CustomModel

@{
    ViewData["Title"] = "Home Page";
}

<div class="text-center">
    <h1>Welcome to homepage</h1>
    @if (Model.PartialViewPath != null)
    {
        @await Html.PartialAsync(Model.PartialViewPath)
    }
</div>

局部视图:

<div>
    <h1>Hello from Partial View</h1>
</div>

结果如下:
https://localhost:7230/no-partial

<main b-bddmc6yalx="" role="main" class="pb-3">
    <div class="text-center">
        <h1>Welcome to homepage</h1>
    </div>
</main>

https://localhost:7230/with-partial

<main b-bddmc6yalx="" role="main" class="pb-3">
    <div class="text-center">
        <h1>Welcome to homepage</h1>

        <div>
            <h1>Hello from Partial View</h1>
        </div>
    </div>
</main>

有关部分视图的更多信息,请参阅以下内容:https://learn.microsoft.com/en-us/aspnet/core/mvc/views/partial?view=aspnetcore-7.0
在我看来,这不是最好的做法。我会建议制作多个较小的局部视图,然后只用它们构建视图。我的意思是:

Create.cshtml:
- Partial_Form
- Partial_CreateButtons
- Partial_Form2

Edit.cshtml:
- Partial_Form
- Partial_EditButtons
- Partial_Form2
- Partial_DeleteButtons

Detail.cshtml:
- Partial_Form
- Partial_Form2
- Partial_DetailButtons

您将有3个视图,但是内容将从这些部分视图构建,您将“硬编码”到视图中。因此,每当您需要编辑某些内容时,您将编辑较小的组件/视图,而不是巨大的通用视图。

相关问题