使用部分视图

发布于 2024-10-28 07:01:28 字数 184 浏览 3 评论 0原文

我正在将 MVC 3 razor 用于 Web 应用程序。我的要求是创建一个类似向导的感觉,为此我为每个步骤使用独立的视图。我想使用具有“上一步”、“取消”和“下一步”按钮的部分视图,以便在每个步骤中我都可以使用此部分视图。请建议我如何采用方法以及如何决定在“上一个”和“下一个”按钮上调用什么操作。

非常感谢

问候 维夫

I am using MVC 3 razor for a web application. My requirement is to create a wizard like feel, for this i am using independent views for each step. I want to use a partial view having Previous, Cancel and Next buttons so that on each step i could use this partial view. Please suggest how can i go with approach and how to decide what action will be called on Previous and Next button.

Many thanks

Regards
Viv

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温柔女人霸气范 2024-11-04 07:01:28

我可能会在控制器中进行类似“Step”操作的操作。此操作将接受 id 参数(int)。然后我可能会使用类似以下内容的内容:(伪代码)

// Checking what Id you got from url
// Setting int id = ...
//

// And then
switch(id)
{
  case 1: return View(view1);
  case 2: return View(view2);
  case 3: return View(view3);
}

Url 将如下所示:

/Controller/Step/Id

您只需选择 url 的最后一部分即可指向特定步骤。喜欢:

<a href="http://localhost/myApp/Controller/Step/3">Step 3</a>

评论后编辑:
如果需要动态行为,可以在控制器中使用 ViewBag 属性。

switch(id)
{
  case 1:
  {
    ViewBag.PrevStep = 0;
    ViewBag.NextStep = 2;
    return View(view1);
  }
  case 2:
  {
    ViewBag.PrevStep = 1;
    ViewBag.NextStep = 3;
    return View(view2);
  }
  // etc...
}

然后在您看来,您将创建如下链接:

<a href="http://localhost/myApp/Controller/Step/@ViewBag.PrevStep">Previous step</a>
<a href="http://localhost/myApp/Controller/Step/@ViewBag.NextStep">Next step</a>

您当然可以@Html.ActionLink,但我现在不记得它的正确语法:)

但是..如果您对每个步骤都有特定的视图,那么您可以在视图中对这些链接进行硬编码。

I would probably make something like "Step" action in a Controller. This Action would accept id parameter (int). Then I would probably use something like: (pseudocode)

// Checking what Id you got from url
// Setting int id = ...
//

// And then
switch(id)
{
  case 1: return View(view1);
  case 2: return View(view2);
  case 3: return View(view3);
}

Url will then look like:

/Controller/Step/Id

And you can point to specific step just by choosing that last part of url. Like:

<a href="http://localhost/myApp/Controller/Step/3">Step 3</a>

Edit after comments:
You can use ViewBag property in controller if you need dynamic behaviour.

switch(id)
{
  case 1:
  {
    ViewBag.PrevStep = 0;
    ViewBag.NextStep = 2;
    return View(view1);
  }
  case 2:
  {
    ViewBag.PrevStep = 1;
    ViewBag.NextStep = 3;
    return View(view2);
  }
  // etc...
}

Then in your view, you will make links like:

<a href="http://localhost/myApp/Controller/Step/@ViewBag.PrevStep">Previous step</a>
<a href="http://localhost/myApp/Controller/Step/@ViewBag.NextStep">Next step</a>

You can of course @Html.ActionLink, but I can't remember correct syntax for it right now :)

But still.. if you have specific View for each step then you can just hardcode these links in views.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文