Asp.net mvc 在MVC模型中读取复选框值

Asp.net mvc 在MVC模型中读取复选框值,asp.net-mvc,visual-studio-2019,Asp.net Mvc,Visual Studio 2019,我已经研究了在Index.cshtml文件中读取支票簿值的各种方法,但到目前为止,似乎没有一种方法适合我 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>@ViewData["Ti

我已经研究了在Index.cshtml文件中读取支票簿值的各种方法,但到目前为止,似乎没有一种方法适合我

 <!DOCTYPE html>
 <html lang="en">
 <head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - Logger Index</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" />
</head>
<body>

@using (Html.BeginForm(new { action = "Employees" }))
{
    <header>
        <fieldset>
            <div>
                @Html.CheckBox("item1", true))
                <label for="coding">Coding</label>
            </div>
            <div>
                @Html.CheckBox("item1", false)
                <label for="music">Music</label>
           </div>
        </fieldset>
        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
            <div class="container">
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                        aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>

                <ul class="navbar-nav flex-grow-1">
                    <li>@Html.ActionLink("Logger", "Employees", new { area = "" }, new { @class = "navbar-brand" }),</li>
                </ul>

我试图返回各种复选框值,用于创建查询字符串,而不是固定的查询字符串。

好的,我添加到视图的顶部

 @model LogBook.Models.Employees
还将@复选框更改为 @CheckBoxFor(m=>m.item1,新的{@class=“Employees”})

在顶部和控制器中

 public IActionResult Employees2(Employees model)
如您所见,我将item1设置为true,item2设置为default为false。当我在调试模式下运行程序时,我让它在

 public IActionResult Employees2(Employees model)
    {
        bool item1 = model.item1;
        bool item2 = model.item2;

Model.item1和Model.item2仍然为false。

好的,我添加到视图的顶部

 @model LogBook.Models.Employees
还将@复选框更改为 @CheckBoxFor(m=>m.item1,新的{@class=“Employees”})

在顶部和控制器中

 public IActionResult Employees2(Employees model)
如您所见,我将item1设置为true,item2设置为default为false。当我在调试模式下运行程序时,我让它在

 public IActionResult Employees2(Employees model)
    {
        bool item1 = model.item1;
        bool item2 = model.item2;

Model.item1和Model.item2仍然为假。

找到了答案。如果您使用@ActionLink返回控制器,它将不会返回与我的模型相关的CheckBox、RadioBox等内容的值。我要做的是使用输入提交和{HttpPost]索引例程。然后我可以看到我的模型中复选框的更改。然后将视图重定向到我的控制器例程,该例程处理事情并将结果发送到视图。那么为什么使用@ActionLink按钮不返回绑定到复选框的模型项呢?

找到了答案。如果使用@ActionLink返回控制器,它将我不会返回复选框、RadioBox等绑定到我的模型的值。我要做的是使用输入提交和{HttpPost]索引例程。然后我可以看到我的模型中复选框的更改。然后将视图重定向到我的控制器例程,该例程处理事情并将结果发送到视图。那么为什么使用@ActionLink按钮不返回绑定到复选框的模型项呢?

到底是什么不起作用?通常,您希望控制器的操作能够接受t模型的参数,以便ModelBinder处理输入并为您“打包”它们。在这种情况下,您的方法将看起来是public IActionResult Employees(Employees模型)然后,您可以阅读model.item1和model.item2并根据需要使用它们。到底什么不起作用?通常,您希望控制器操作接受模型的参数,以便ModelBinder处理输入并为您“打包”它们。在这种情况下,您的方法看起来是public IActionResult Employees(员工模型),然后您可以阅读model.item1和model.item2并根据需要使用它们。