首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于ViewModel的控制器动作重用

基于ViewModel的控制器动作重用
EN

Stack Overflow用户
提问于 2013-10-29 17:58:15
回答 2查看 138关注 0票数 1

我将在我的网站上有一份登记表,其中将首先显示董事会规则/法律。一旦接受,它将显示主登记表。使用ViewModel如下所示:

代码语言:javascript
复制
public class MyViewModel
{
    public int Readrules { get; set; }
    public int Coppa { get; set; }
}

public ActionResult Register(MyViewModel model)
{
    ... at this stage model.Readrules and model.Coppa will contain the values passed
        as query string parameters tat you could use here
}

我的想法是,如果我去/register,它将显示规则,然后/register?readrules=1,它将显示登记表。这是如何在PHP中完成的,但现在我要迁移到ASP.NET。

做这件事最好的方法是什么?我是否可以重定向到相同的操作,只解析model.ReadRules的值,或者必须使用多个操作?我宁愿把它放在一个动作中,只需检查model.ReadRules == 1是否显示木板规则或注册表格。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-29 18:03:32

您可以使用不同的控制器操作来显示规则、注册和处理注册,而不是重复使用registration,如下所示:

控制器操作:

代码语言:javascript
复制
public ActionResult BoardRules() 
{
    return View();
}

public ActionResult Register(MyViewModel model)
{
    if (model.ReadRules != 1)
        return RedirectToAction("BoardRules");

    return View();
}

public ActionResult Registration(MyViewModel model)
{
    if (model.ReadRules != 1)
        return RedirectToAction("BoardRules");

    //Process the registration

    return View();
} 

视图:

BoardRules.cshtml:

代码语言:javascript
复制
@* HTML Displaying Rules *@
<a href="@Url.Action("Register", new { ReadRules = 1 })">Accept Rules</a>

Register.cshtml:

代码语言:javascript
复制
@using (Html.BeginForm("Registration", "[Controller Name]", new { ReadRules = 1 }))
{
    @* Form Fields *@
    <input type="submit" value="Process Registration" />
} 

Registration.cshtml

代码语言:javascript
复制
<h2>Congratz on Registering!</h2>
票数 1
EN

Stack Overflow用户

发布于 2013-10-29 18:05:55

代码语言:javascript
复制
public ActionResult Register()
{
    return View("boardrules");       //Default
}

public ActionResult Register(MyViewModel model)
{
    if (model.ReadRules == 1)
    {
        model.ReadRules++;            //Next time it won't be 1 but step 2
        return View("registration",model);
    }
    else
    {
      //Do IF or Case for other step
    }
    return View("boardrules");       //Default
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19665762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档