【问题标题】:ASP.Net Core MVC - Calling a different view from a controllerASP.Net Core MVC - 从控制器调用不同的视图
【发布时间】:2021-09-05 22:16:10
【问题描述】:

我是 ASP.Net Core MVC 的新手,有一个问题。我有一个家庭控制器,它使用索引视图在表格中显示客户列表。每一行我有两个按钮;编辑和删除按钮。当用户单击编辑按钮时,它会在我的家庭控制器中调用一个名为 editcustomer 的操作,传入客户 ID。在此操作中,我创建了一个视图模型并使用正确的数据填充所有模型。然后,我需要使用此视图模型调用我的客户详细信息视图以显示所有客户信息。 我不确定如何从我的家庭控制器切换到我的客户详细信息控制器并显示我的客户详细信息视图。

我是新手,我正在浏览大量 YouTube 视频来学习,但我只需要一些关于如何正确执行此过程的指导。

下面是我的 EditCustomer 操作的代码,但它出错了,因为它正在主(控制器名称)文件夹中查找视图,而不是视图文件夹下的 CustomerDetails 文件夹:

        public IActionResult EditCustomer(int customer_Id)
        {
            CustomerDetailsViewModel customerDetails = new CustomerDetailsViewModel();
            customerDetails.customer = customerRepository.getCustomer(customer_Id);
            customerDetails.titles = customerRepository.getTitles();
            customerDetails.ePCs = customerRepository.getEPCs();
            customerDetails.jobStages = customerRepository.getJobStages();
            customerDetails.propertyStatus = customerRepository.getPropertyStatus();
            customerDetails.propertyTypes = customerRepository.getPropertyTypes();
            customerDetails.heatSources = customerRepository.getHeatSources();
            customerDetails.fuelTypes = customerRepository.getFuelTypes();
            customerDetails.ePCRequesters = customerRepository.getEPCRequesters();
            customerDetails.ePCCompanies = customerRepository.getEPCCompanies();
            customerDetails.surveyors = customerRepository.getSurveyors();
            customerDetails.surveyStatus = customerRepository.getSurveyStatus();
            customerDetails.installationInstallers = customerRepository.getInstallationInstallers();
            customerDetails.loftInstallers = customerRepository.getLoftInstallers();
            customerDetails.heatInstallers = customerRepository.getHeatInstallers();

            return View("CustomerDetails",customerDetails);
        }

【问题讨论】:

  • return View 只在Views 的当前控制器文件夹或Shared 文件夹下搜索

标签: asp.net-core model-view-controller view controller


【解决方案1】:

您可以尝试使用RedirectToAction,将模型传递给另一个控制器中的动作,并返回带有模型的视图。这是一个演示:

B控制器:

public class BController : Controller
    {
        public IActionResult TestRedirect()
        {
            return RedirectToAction("CustomerDetails", "Home", new CustomerDetailsViewModel { titles="titlesample"});
            
        }
    }

家庭控制器:

public class HomeController : Controller
    {
        
        public IActionResult CustomerDetails(CustomerDetailsViewModel c)
        {
            return View(c);
        }  
    }

查看(首页/客户详情):

@model CustomerDetailsViewModel
<h1>
    @Model.titles
</h1>

结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多