You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 03:57:06