C# MVC控制器多视图和路由问题
目前,我们有一个视图名称“Self Deposit”,并有一个控制器支持它。 该视图是一个独立页面,使用部分视图构建: 例子 文件夹名称:SelfDeposit 主视图文件:_layoutseleposit.cshtml 部分视图:Register.cshtml、Pending.cshtml等 这是主要观点:C# MVC控制器多视图和路由问题,c#,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,目前,我们有一个视图名称“Self Deposit”,并有一个控制器支持它。 该视图是一个独立页面,使用部分视图构建: 例子 文件夹名称:SelfDeposit 主视图文件:_layoutseleposit.cshtml 部分视图:Register.cshtml、Pending.cshtml等 这是主要观点: @视图包。标题 @style.Render(“~/Content/SelfDeposit\u css”) @Scripts.Render(“~/bundles/Scripts”) @S
@视图包。标题
@style.Render(“~/Content/SelfDeposit\u css”)
@Scripts.Render(“~/bundles/Scripts”)
@Scripts.Render(“~/bundles/bootstrap”)
@Scripts.Render(“~/bundles/jqueryval”)
@if(System.Globalization.CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft)
{
@style.Render(“~/Content/BootstapRtl_css”)
}
@RenderBody()
@Html.Partial(“第三方Typexels/GoogleTagManager”)
这是加载其开始的控制器:
private readonly ForexDbContext _Db = DbLoader.GetDb();
// GET: SelfDeposit
public ActionResult Index()
{
return RedirectToAction(nameof(this.Register));
}
public async Task<ActionResult> Register()
{
ViewBag.CountryId = await GetCountiesAsync();
var model = new SelfDepositRegistrationViewModel { };
if (TempData[Main.LEAD_REG_DETAILS_FOR_OPEN_ACCOUNT] != null && TempData[Main.LEAD_REG_DETAILS_FOR_OPEN_ACCOUNT] is LeadRegistered)
{
var leadRegistered = TempData[Main.LEAD_REG_DETAILS_FOR_OPEN_ACCOUNT] as LeadRegistered;
ViewBag.LeadRegisteredDetails = leadRegistered;
model.FirstName = leadRegistered.FirstName;
model.LastName = leadRegistered.LastName;
model.Email = leadRegistered.Email;
model.PhoneNumber = leadRegistered.Phone;
model.PhoneCountryCode = leadRegistered.PhoneCountry;
}
return View(model);
}
private readonly ForexDbContext\u Db=DbLoader.GetDb();
//获取:自动存款
公共行动结果索引()
{
返回重定向操作(nameof(this.Register));
}
公共异步任务寄存器()
{
ViewBag.CountryId=等待GetCountriesAsync();
var模型=新的SelfDepositRegistrationViewModel{};
如果(TempData[Main.LEAD\u REG\u DETAILS\u FOR \u OPEN\u ACCOUNT]!=null&&TempData[Main.LEAD\u REG\u DETAILS\u FOR \u OPEN\u ACCOUNT]为LeadRegistered)
{
var leadRegistered=TempData[Main.LEAD\u REG\u DETAILS\u FOR\u OPEN\u ACCOUNT]作为leadRegistered;
ViewBag.LeadRegisteredDetails=leadRegistered;
model.FirstName=leadRegistered.FirstName;
model.LastName=leadRegistered.LastName;
model.Email=leadRegistered.Email;
model.PhoneNumber=leadRegistered.Phone;
model.PhoneCountryCode=leadRegistered.PhoneCountry;
}
返回视图(模型);
}
我试图实现的是拥有多个视图,每个视图具有不同的布局和css,但保持控制器不变,而不是在每次添加视图时复制它
我尝试了以下操作:在主文件夹下添加文件夹:
自存-->布局1-->\u layoutselfposit.cshtml
但它没有工作,因为我无法计算路由问题
有人有想法吗?
感谢要返回不同的视图,您可以指定要返回的视图的名称和模型,如下所示:
return View("ViewName", yourModel);
要获取视图的绝对路径,请使用:
return View("~/Views/FolderName/ViewName.cshtml");
或者,您可以创建一个局部视图,并可以像这样返回:
return PartialView("PartialViewName", Model);
要返回不同的视图,可以指定要返回的视图的名称和模型,如下所示:
return View("ViewName", yourModel);
要获取视图的绝对路径,请使用:
return View("~/Views/FolderName/ViewName.cshtml");
或者,您可以创建一个局部视图,并可以像这样返回:
return PartialView("PartialViewName", Model);
您是否希望通过
返回视图(viewName,model)
来有效地使视图的名称动态化?然后,您可以从querystring、DB或类似文件中查找该名称。我已经使用cookies实现了类似的功能来控制表单旅程流。您是否希望通过返回视图(viewName,model)
来有效地使视图的名称动态化?然后,您可以从querystring、DB或类似文件中查找该名称。我已经使用cookies实现了类似的东西来控制表单流程。