我对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);
}
所以我的问题是,当用户提交表单时,它应该回到同样的方法吗?如果是这样,那么验证这是提交而不是初始加载的最佳方法是什么?
此外,我在错误处理方面做得不多,可能会对此使用建议,例如,如果上述任一服务调用失败,则无法完成注册,如果指向新页面或有没有一种简单的方法可以将这种错误构建到同一页面中?
答案 0 :(得分: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);
}
}
您可以查看默认模板中的示例。