【问题标题】:Displaying some of the database data in .NET MVC textboxes在 .NET MVC 文本框中显示一些数据库数据
【发布时间】:2022-01-12 09:53:17
【问题描述】:

我必须显示 9 个带有标签的字段。 其中 6 个是硬编码在数据库中的(因为它们应该是不可编辑的),其余 3 个是用户输入。 代码随此附上。 请帮忙!

我的模型是:

public partial class User
    {
        public int UserID { get; set; }

        [DisplayName("User Name")]
        [Required(ErrorMessage="Please enter your User Name!")]
        public string UserName { get; set; }
        
        [DataType(DataType.Password)]
        [Required(ErrorMessage = "Please enter your Password!")]
        public string Password { get; set; }

        public string LoginErrorMessage { get; set; }

        /* My changes */
        [DisplayName("Name")]
        public string Name { get; set; }

        [DisplayName("Father's Name")]
        public string FatherName { get; set; }

        [DisplayName("CNIC (without dashes)")]
        public int CNIC { get; set; }

        [DisplayName("Address")]
        public string Address { get; set; }

        [DisplayName("Line Manager")]
        public string LineManager { get; set; }

        [DisplayName("Department")]
        public string Department { get; set; }

        [DisplayName("Designation")]
        public string Designation { get; set; }
    }
}

我的控制器:

namespace MVC_Login_6Dec.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/
        public ActionResult Index()
        {
            var data = db.Users.ToList();
            return View();
        }

        /* My Changes */

            private LoginDatabaseEntities db = new LoginDatabaseEntities();

            public ActionResult GetList()
            {
                var userData = (from user in db.Users select user).ToList();
                return View(userData);
            }

            [HttpPost]
            public ActionResult GetList(User model)
            {
                var data = db.Users.ToList();
                return View(data);
            }
    }
}

我的观点:

@model MVC_Login_6Dec.Models.User
@{
    Layout = null;
    if (Session["userID"] == null)
    {
        Response.Redirect("~/Login/Index");
    }
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div"> 
        <h1>Employee Details</h1>
        <div>
            <h4>UserName: @Session["userName"].ToString()</h4>
        </div>
        <div>
            <a href="@Url.Action("Logout","Login")">Logout</a>
        </div>
        <br>
    </div>
    <div>
    @using (Html.BeginForm("GetList", "Home", FormMethod.Get))
    {
        
        <table>
            <tr>
                <td>@Html.LabelFor(Model => Model.Name)</td>
                <td>@Html.TextBoxFor(Model => Model.Name)</td>
            </tr>
            <tr>
                <td>@Html.LabelFor(Model => Model.FatherName)</td>
                <td>@Html.TextBoxFor(Model => Model.FatherName)</td>
            </tr>
            <tr>
                <td>@Html.LabelFor(Model => Model.CNIC)</td>
                <td>@Html.TextBoxFor(Model => Model.CNIC)</td>
            </tr>
            <tr>
                <td>@Html.LabelFor(Model => Model.Address)</td>
                <td>@Html.TextBoxFor(Model => Model.Address)</td>
            </tr>
            <tr>
                <td>@Html.LabelFor(Model => Model.LineManager)</td>
                <td>@Html.TextBoxFor(Model => Model.LineManager)</td>
            </tr>
            <tr>
                <td>@Html.LabelFor(Model => Model.Department)</td>
                <td>@Html.TextBoxFor(Model => Model.Department)</td>
            </tr>
            <tr>
                <td>@Html.LabelFor(Model => Model.Designation)</td>
                <td>@Html.TextBoxFor(Model => Model.Designation)</td>
            </tr>
        </table>
    }
    </div>
</body>
</html>

数据不显示在字段中,它们是空的。

我的输出:

Output Screenshot

【问题讨论】:

    标签: c# asp.net asp.net-mvc database


    【解决方案1】:

    您的输出屏幕截图未显示您正在显示的页面的路由 (URL),因此我不确定您正在调用哪个控制器操作。但是,您的视图需要一个 MVC_Login_6Dec.Models.User 对象,并且您的所有控制器操作都不会将单个 User 对象传递给视图。假设您有一个名为“编辑”的视图,您需要一个执行以下操作的操作:

    public ActionResult Edit(int UserId)
    {
         var user = db.Users.Where(x => x.UserID == UserId).FirstOrDefault()
         return View(user);
    }
    

    然后您可以通过访问 http://localhost/home/edit/{the id} 来调用此操作。您还需要确保您的 App_Start\RouteConfig.cs 以“正常”方式配置:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", 
                id = UrlParameter.Optional }
        );
    }
    

    如果您在此控制器操作中放置调试断点,您还可以检查用户对象以查看您的数据库实体对象是否配置正确并返回数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多