0

我对 MVC 相当陌生,我正在寻找有关如何设置特定注册控制器的建议。

我有一个名为 AccountController 的控制器,它有一个 Register 方法,我有一个 Register.cshtml。

现在,我似乎遇到的最大问题之一是我需要根据服务的响应填充 2 个下拉列表,因为这些值会根据位置和其他各种参数而变化。

我的页面已启动并加载,但我不确定用户单击“注册”后该怎么做。

@model Adw.Models.RegisterModel //This is my model

@Html.DropDownListFor(m => m.States, new SelectList(Model.States)); // I load my dropdowns here

[AllowAnonymous]
public ActionResult Register(RegisterModel model)
{
    model.States = Services.GetStates().Payload;
    model.Countries = Services.GetCountries().Payload;
    return View(model);
}

所以我的问题是,当用户提交表单时,它应该回到同样的方法吗?如果是这样,验证这是提交而不是初始加载的最佳方法是什么?

此外,我在错误处理方面没有做太多工作,并且可以对此提出建议,例如,如果上述任何一个服务调用失败,则无法完成注册,应该直接到新页面还是有将这种错误构建到同一页面中的简单方法?

4

1 回答 1

1

您应该创建两种不同的方法。一个用于 GET,第二个用于 POST 请求:

[AllowAnonymous]
[HttpGet]
public ActionResult Register()
{
    ...
}

[AllowAnonymous]
[HttpPost]
public ActionResult Register(RegisterModel model)
{
    if (ModelState.IsValid)
    {
        // create user

        return this.RedirectToAction("SignIn");
    }
    else
    {
        return View(model);
    }
}

您可以查看默认模板中的示例。

于 2013-05-07T20:08:31.893 回答