Visual Studio代码报错求助:Asp.Net Core控制器存在多个编译错误
Asp.Net Core控制器编译错误修复
原始代码
using System; using System.ComponentModel.DataAnnotations; using Microsoft.AspNetCore.Mvc; using Simple_website.Services namespace simple_website.Controllers { public class UserViewModel { public Guid Id { get; set; } public string Login { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Tittle { get; set; } public string ErrorMessage { get; set; } public string CreationMode { get; set; } } public class UserController { private IUserService _userService; public UserController(IUserService userService) { _service = userService; } [HttpGet] public IActionResult Create() { ViewBag.Title = "Create a new user"; return View(new UserViewModel()); } [HttpGet] public IActionResult Edit(Guid userId) { ViewBag.Title = "Edit a user"; var user = _userService.GetUser(userId); if (user == null) { ViewBag.ErrorMessage = $"User '{userId}' was not found!"; return View("Error"); } var viewModel = new UserViewModel { Id = user.Id, Login = user.Login, FirstName = user.FirstName, LastName = user.LastName }; return View(viewModel); } [HttpPost] public IActionResult Save(UserViewModel viewModel) { if (string.IsNullOrEmpty(viewModel.Login)) { ViewBag.ErrorMessage = "Login is required!"; return View(viewModel); } if (ModelState.IsValid) { if (viewModel.Id == Guid.Empty) // Creation mode { var newUser = new User { Login = viewModel.Login, FirstName = viewModel.FirstName, LastName = viewModel.LastName }; _userService.CreateUser(newUser); } else // Edit mode { var user = _userService.GetUser(viewModel.Id); if (user == null) { ViewBag.ErrorMessage = $"User '{viewModel.Id}' was not found!"; return View("Error"); } user.Login = viewModel.Login; user.FirstName = viewModel.FirstName; user.LastName = viewModel.LastName; _userService.UpdateUser(user); } return RedirectToAction("Confirmation"); } ViewBag.Title = viewModel.Id == Guid.Empty ? "Create a new user" : "Edit a user"; return View(viewModel); } [HttpGet] public IActionResult Confirmation() { return View(); } } }
编译错误(中文翻译)
- 名称“ViewBag”在当前上下文中不存在。
- 名称“View”在当前上下文中不存在。
- 名称“_userService”在当前上下文中不存在。
- “UserViewModel”不包含“firstName”的定义。
- “UserViewModel”不包含“lastName”的定义。
- 名称“ModelState”在当前上下文中不存在。
- “UserViewModel”不包含“FirsrName”的定义,也找不到可访问的扩展方法“FistName”(是否缺少using指令或程序集引用?)
逐个修复方案
1. 解决ViewBag、View、ModelState不存在的问题
Asp.Net Core MVC控制器必须继承Controller基类才能使用ViewBag、View()方法和ModelState属性,修改控制器定义:
public class UserController : Controller
2. 解决_userService不存在的问题
构造函数中错误地将注入服务赋值给未定义的_service字段,应改为赋值给声明的_userService:
public UserController(IUserService userService) { _userService = userService; // 替换原有的_service = userService; }
3. 解决属性大小写/拼写错误问题
C#是大小写敏感语言,同时修正拼写错误:
- 所有引用
UserViewModel属性的地方使用正确大小写:FirstName、LastName,避免写成小写的firstName/lastName。 - 将错误拼写的
FirsrName改为FirstName(注意字母t和r的顺序)。
4. 其他语法问题
- 补全
using语句末尾的分号:
using Simple_website.Services; // 添加分号
- 确保
User实体类的命名空间已被引用(若User不在当前命名空间下,需添加对应using语句)。 - 可选修正:
UserViewModel中的Tittle拼写错误,改为Title。
修复后的完整代码
using System; using System.ComponentModel.DataAnnotations; using Microsoft.AspNetCore.Mvc; using Simple_website.Services; // 补充分号 using Simple_website.Models; // 假设User实体在此命名空间下,需添加引用 namespace simple_website.Controllers { public class UserViewModel { public Guid Id { get; set; } public string Login { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Title { get; set; } // 修正拼写错误 public string ErrorMessage { get; set; } public string CreationMode { get; set; } } public class UserController : Controller // 继承Controller基类 { private IUserService _userService; public UserController(IUserService userService) { _userService = userService; // 修正赋值目标 } [HttpGet] public IActionResult Create() { ViewBag.Title = "Create a new user"; return View(new UserViewModel()); } [HttpGet] public IActionResult Edit(Guid userId) { ViewBag.Title = "Edit a user"; var user = _userService.GetUser(userId); if (user == null) { ViewBag.ErrorMessage = $"User '{userId}' was not found!"; return View("Error"); } var viewModel = new UserViewModel { Id = user.Id, Login = user.Login, FirstName = user.FirstName, LastName = user.LastName }; return View(viewModel); } [HttpPost] public IActionResult Save(UserViewModel viewModel) { if (string.IsNullOrEmpty(viewModel.Login)) { ViewBag.ErrorMessage = "Login is required!"; return View(viewModel); } if (ModelState.IsValid) { if (viewModel.Id == Guid.Empty) // Creation mode { var newUser = new User { Login = viewModel.Login, FirstName = viewModel.FirstName, LastName = viewModel.LastName }; _userService.CreateUser(newUser); } else // Edit mode { var user = _userService.GetUser(viewModel.Id); if (user == null) { ViewBag.ErrorMessage = $"User '{viewModel.Id}' was not found!"; return View("Error"); } user.Login = viewModel.Login; user.FirstName = viewModel.FirstName; user.LastName = viewModel.LastName; _userService.UpdateUser(user); } return RedirectToAction("Confirmation"); } ViewBag.Title = viewModel.Id == Guid.Empty ? "Create a new user" : "Edit a user"; return View(viewModel); } [HttpGet] public IActionResult Confirmation() { return View(); } } }
内容的提问来源于stack exchange,提问作者mca
相关产品推荐
相关产品推荐

