1

我将在我的网站上有一个注册表,首先显示董事会规则/法律。一旦被接受,它将显示主要的注册表单。使用 ViewModel 如下:

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显示董事会规则或注册表单。

谢谢

4

2 回答 2

1

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

控制器动作:

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:

@* HTML Displaying Rules *@
<a href="@Url.Action("Register", new { ReadRules = 1 })">Accept Rules</a>

注册.cshtml:

@using (Html.BeginForm("Registration", "[Controller Name]", new { ReadRules = 1 }))
{
    @* Form Fields *@
    <input type="submit" value="Process Registration" />
} 

注册.cshtml

<h2>Congratz on Registering!</h2>
于 2013-10-29T18:03:32.653 回答
1
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
}
于 2013-10-29T18:05:55.550 回答